Python改写TXT文件:指定位置换行及PDF转TXT工具推荐
解决文本换行问题 + PDF转TXT工具推荐
一、在特定位置插入换行的最简Python实现
根据你的需求,我们需要匹配**金额(xx.xx或带千分位逗号的xxx,xxx.xx格式)后面紧跟日期(如17 Apr)**的场景,然后在两者之间插入换行。用正则表达式是最直接高效的方式,Python内置的re模块就能轻松搞定。
代码示例
import re # 你的原始文本片段 raw_text = "15 Apr 20DDOPEN 100.00DDBENNON WATER SRVCS29.00DDBG BUSINESS106.00BPC BOB PETROL MINISTRY78.03BPC BARBARA STREAMING DATA30.50CRPAYPAL Z4J22FR450.00CRPAYNAL AAWDL4Z4J22222KHMG30.0019,028.4917 Apr 20CRCASH IN AT HSBC BANK" # 正则模式:匹配金额 + 紧跟的日期开头(数字+空格+月份缩写) # 金额支持带千分位逗号的格式,比如19,028.49 date_split_pattern = r'(\d{1,3}(?:,\d{3})*\.\d{2})(\d+ \w{3})' # 第一步:在金额和日期之间插入换行符 formatted_text = re.sub(date_split_pattern, r'\1\n\2', raw_text) # 可选优化:在金额和后续字母前缀(如DD、BPC)之间加空格,进一步提升可读性 space_add_pattern = r'(\d{1,3}(?:,\d{3})*\.\d{2})([A-Za-z]+)' formatted_text = re.sub(space_add_pattern, r'\1 \2', formatted_text) # 输出或保存处理后的文本 print(formatted_text) # 如果要保存到文件: # with open('formatted_bill.txt', 'w', encoding='utf-8') as f: # f.write(formatted_text)
代码说明
- 日期换行处理:
- 正则
date_split_pattern精准匹配金额(含千分位)+ 紧跟的日期开头,替换时用\1\n\2把两者用换行分隔,解决日期和金额粘连的问题。
- 正则
- 可读性优化:
- 额外的
space_add_pattern处理金额和字母前缀粘连的情况(比如100.00DDBENNON变成100.00 DDBENNON),让交易记录的结构更清晰。
- 额外的
二、推荐Python PDF转TXT工具
如果你的银行账单是结构化的(有表格、固定排版),推荐以下工具,比直接转成杂乱TXT体验好很多:
pdfplumber:
- 优点:对表格、页眉页脚的提取精度极高,能保留原始排版结构,支持提取特定页面、特定区域的内容,API简单易用。
- 安装:
pip install pdfplumber - 适合:银行账单这类有清晰表格结构的PDF,能直接提取每一行交易记录,减少后续文本整理的工作量。
PyPDF2:
- 优点:轻量、入门简单,适合快速提取纯文本,无需复杂排版处理。
- 安装:
pip install PyPDF2 - 缺点:对复杂排版的PDF提取效果一般,可能出现文本乱序、粘连的情况。
pdfminer.six:
- 优点:底层灵活,支持自定义文本提取规则,能处理编码复杂的PDF。
- 安装:
pip install pdfminer.six - 适合:需要高度定制化提取逻辑的场景,比如处理非标准格式的PDF。
如果你的银行账单是扫描版的图片PDF,需要先用OCR工具(比如pytesseract)转成可编辑文本,再用上面的方法处理。
内容的提问来源于stack exchange,提问作者tedioustortoise
相关产品推荐
相关产品推荐

