在 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)
输出为:
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)
我已将 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)
输出为:
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)