繁体   English   中英

在 python 中重写一个 txt 文件,在有特定字符串的地方创建新行

[英]Rewriting a txt file in python, creating new lines where there is a certain string

我已将 PDF 银行对帐单转换为 txt 文件。 这是 .txt 文件的片段:

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 

在 python 中重写文本文件以在某些点创建新行的最简单方法是什么。 即在数字“xx.xx”之后出现新日期,例如“xx APR”

例如要变成的文本:

15 Apr 20DDOPEN 100.00
BENNON WATER SRVCS29.00
DDBG BUSINESS106.00...(etc)

我只是想让 PDF 在处理我的其他文件时更具可读性和实用性。

如果您知道另一个 PDF 到 txt python 转换器效果更好,我也会感兴趣。

谢谢你的帮助

对于给定的输入,以下应该工作:

import re

counter = 0
l = "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"

nums = re.finditer("[\d]+[\.][\d]+", l)
for elem in nums:
    idx = elem.span()[1] + counter
    l = l[:idx] + '\n' + l[idx:]
    counter += 1
print(l)

output 是:

15 Apr 20DDOPEN 100.00
DDBENNON WATER SRVCS29.00
DDBG BUSINESS106.00
BPC BOB PETROL MINISTRY78.03
BPC BARBARA STREAMING DATA30.50
CRPAYPAL Z4J22FR450.00
CRPAYNAL AAWDL4Z4J22222KHMG30.0019
,028.4917
 Apr 20CRCASH IN AT HSBC BANK

然后,您应该能够轻松地逐行写入文件。

第一步是将文本文件放入 Python

with open(“file.txt”) as file:  
    data = file.read()

下一部分,最初,我以为你做不到,但在你的例子中,每个部分都包含一个数字 XX.XX 这里要注意的重要一点是有一个“。” 在每个数字中。

使用 Python 的字符串查找命令,您可以迭代地查找那个 '.' 并在两个字符后添加换行符。 如果需要,您也可以在下面更改我的索引以删除 DD。

index = 0
while(index != -1):
    index = data.find('.', index)
    if index != -1:
        data = data[:index+3] + '\n' + data[index+3:]

然后您需要将新数据写回文件。

file = open('ValidEmails.txt','w')
file.write(data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM