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

Python删除文本文件特定字符:PDF转TXT后清理及报错求助

问题解决方案

一、正确删除目标字符串的方法

你当前代码的核心问题是错误地将文本中的换行符当成了字符串"\n",导致匹配逻辑失效。实际读取TXT文件时,换行是真实的换行符(\n),而非字符串"\n"(即反斜杠加n两个字符)。另外,需精准定位要删除的完整目标串,避免误删其他\nC\n。

修正后的代码示例

def findWordInText(name):
    txt_file = f"{name}.txt"
    count = 0   
    # 一次性读取全部文本
    with open(txt_file, 'r', encoding='utf-8', errors="ignore") as f:  
        content = f.read()
    
    # 目标要删除的完整字符串
    target_to_remove = "6\n5\n4\n3\n2\n1\nD\nC\nB\nA"
    # 如果存在目标串,直接删除
    if target_to_remove in content:
        print('需要删除目标内容')
        # 调用修改函数,替换为空字符串(即删除)
        inplace_change(txt_file, target_to_remove, "")
    # 检查是否还有单独的\nC\n
    if "\nC\n" in content:
        writeOnExcel(name, "C")
        count +=1

def inplace_change(file, old_str, new_str):
    with open(file, 'r', encoding='utf-8', errors="ignore") as f:
        s = f.read()
        if old_str not in s:
            print(f'"{old_str}" 未在 {file} 中找到。')
            return
    with open(file, 'w', encoding='utf-8', errors="ignore") as f:
        print(f'将 {file} 中的 "{old_str}" 替换为 "{new_str}"')
        s = s.replace(old_str, new_str)
        f.write(s)

关键修正点

  • 匹配真实换行符:直接用"\nC\n"而非r"\nC\n",r"\n"会被解析成两个字符(\和n),而文本中是单个换行符。
  • 精准匹配目标串:直接匹配完整的"6\n5\n4\n3\n2\n1\nD\nC\nB\nA",避免误删其他位置的\nC\n。如果一定要通过\nC\nB定位,可改用正则表达式匹配其前后内容:
    import re
    # 匹配包含\nC\nB\nA的整段内容并删除
    content = re.sub(r".*\nC\nB\nA", "", content)
    
  • 修复变量名错误:原inplace_change函数中格式化字符串用了未定义的old_string/new_string,现在统一为old_str/new_str。
  • 优化文件操作:避免重复打开文件,一次性读取内容后处理,减少IO开销。

二、解决Tabula转换PDF的报错问题

你遇到的subprocess.CalledProcessError是Tabula工具解析PDF时返回错误,常见原因及解决方法:

  • 检查PDF文件状态:确认383026_C.pdf未加密、未损坏,用PDF阅读器打开验证完整性。
  • 调整Tabula参数:
    • 替换--guess为--lattice(适配表格结构PDF)或--stream(适配流式文本PDF),不同参数解析逻辑不同。
    • 确认--pages 1是否正确,若需转换全部页面,改为--pages all。
  • 验证Java环境:Tabula依赖Java 8及以上版本,确保终端中java命令能正常执行。
  • 更新Tabula版本:当前使用的1.0.5版本较旧,执行以下命令升级:
    pip install --upgrade tabula-py
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:24:42