You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将PDF词汇列表转为可导入Google Sheets的三列表格

词汇PDF转三列CSV解决方案

问题描述

作为教师,需要将包含词汇、音标和对应数字的PDF转换为vocab、API(音标)、number三列的CSV文件,方便直接粘贴到Google Sheets。PDF的文本结构为:

词汇+音标行
对应数字行
(交替重复)

示例PDF文本:

do your best duː jɔː best
33, 81
do your hair/make-up duː jɔː heə/ ˈmeɪkʌp
81
...

原代码尝试提取PDF文本并保存为CSV,但生成空白文件,且未处理三列结构。

原代码问题分析

  1. 仅将每行文本作为单列写入CSV,未处理PDF的交替行结构,无法生成三列数据
  2. 未对词汇和音标行进行拆分,无法分离出vocab和API列
  3. 若extract_text未正确提取PDF内容,也会导致空白CSV(需确保PDF可被文本提取)

修正后的代码

import os
import csv
import re
from pdfminer.high_level import extract_text

base_path = r"C:\Users\PC\OneDrive\Desktop\New folder"
pdf_file = os.path.join(base_path, "vocab.pdf")
csv_file = os.path.join(base_path, "vocab.csv")

# 提取PDF文本并过滤空行
text = extract_text(pdf_file)
lines = [line.strip() for line in text.splitlines() if line.strip()]

# 定义正则:匹配词汇部分(英文短语)和音标部分(IPA)
vocab_pattern = re.compile(r'([a-zA-Z\'\/\s]+)\s+([^\s].*)')

with open(csv_file, "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    # 写入表头
    writer.writerow(["vocab", "API", "number"])
    
    # 每两行一组处理:词汇音标行 + 数字行
    for i in range(0, len(lines), 2):
        if i + 1 >= len(lines):
            break  # 防止最后一行无对应数字行
        
        vocab_line = lines[i]
        number_line = lines[i+1]
        
        # 拆分词汇和音标
        match = vocab_pattern.match(vocab_line)
        if match:
            vocab = match.group(1).strip()
            api = match.group(2).strip()
            # 写入三列数据
            writer.writerow([vocab, api, number_line])

print(f"Done! CSV文件已生成:{csv_file}")

代码说明

  • 文本提取与过滤:提取PDF文本后,过滤掉空行,确保只处理有效内容
  • 正则拆分:通过正则表达式准确分离英文词汇短语和IPA音标,适配带空格、撇号、斜杠的词汇
  • 分组处理:按每两行一组的逻辑,将词汇音标行和数字行合并为一行三列数据
  • CSV写入:写入表头和处理后的三列数据,生成的CSV可直接复制粘贴到Google Sheets

内容的提问来源于stack exchange,提问作者Hưng Phạm Đăng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:43:16