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

使用pdfplumber提取PDF转TXT出现多余双引号的问题求助

问题

使用pdfplumber提取PDF文本并转存为TXT文件时,遇到异常:部分行被自动添加了原PDF中不存在的双引号。操作流程是按页提取PDF文本,拆分后存入列表,再写入TXT,但列表中含单引号的字符串(比如Hi, I'm Varoujan Gorjian [...])被自动加上双引号,变成"Hi, I'm Varoujan Gorjian [...]"。尝试调整csv.writer的quotechar和quoting参数后仍未解决问题,怀疑是文本处理环节导致,相关代码如下:

for file in data:
    path = os.path.join(dataDirectory, str(file))

    lines = []
    pdffile = path

    with pdfplumber.open(pdffile) as pdf:
        pages = pdf.pages
        for page in pdf.pages:
            text = page.extract_text()
            for line in text.split('\n'):
                lines.append(line)

    csvFile = os.path.join(goalDirectory, str(file)[:-3]+'txt')

    # open CSV file with coded Text
    with open(csvFile, "w", newline='', encoding='utf-8') as converted:
        writer = csv.writer(converted)
        print(lines)

        for line in lines:
            writer.writerow([line])

提取后的列表示例:

['Black Hole – The Lost Transcript', 'Intro', "Hi, I'm Varoujan Gorjian, I'm a Research Astronomer at NASA's Jet Propulsion Laboratory.", "I've been challenged today to talk about once concept at five different levels of increasing", ...]

解决办法

  • 核心原因:工具使用错误
    你要生成的是TXT文件,却误用了csv.writer来写入——csv模块专为CSV格式设计,会自动对包含特殊字符(如单引号、换行符)的字段添加引号,这是CSV格式的规范行为,和pdfplumber的文本提取无关。

  • 最优修正:直接写入TXT
    替换csv.writer的写入逻辑,改用文件对象的write()方法逐行写入,代码修改如下:

for file in data:
    path = os.path.join(dataDirectory, str(file))

    lines = []
    pdffile = path

    with pdfplumber.open(pdffile) as pdf:
        pages = pdf.pages
        for page in pdf.pages:
            text = page.extract_text()
            for line in text.split('\n'):
                lines.append(line)

    txtFile = os.path.join(goalDirectory, str(file)[:-3]+'txt')

    # 直接写入TXT文件
    with open(txtFile, "w", encoding='utf-8') as converted:
        for line in lines:
            converted.write(line + '\n')
  • 备选方案(不推荐):强制关闭CSV引号处理
    如果一定要用csv.writer,可通过设置quoting=csv.QUOTE_NONE强制关闭引号自动添加,但需注意文本中若有逗号等CSV分隔符会引发格式问题,代码示例:
import csv

# 保持前面的PDF文本提取逻辑不变

txtFile = os.path.join(goalDirectory, str(file)[:-3]+'txt')
with open(txtFile, "w", newline='', encoding='utf-8') as converted:
    writer = csv.writer(converted, quoting=csv.QUOTE_NONE, escapechar='\\')
    for line in lines:
        writer.writerow([line])

内容的提问来源于stack exchange,提问作者Inhibitor_Aspirant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:16:16