使用Python 3.10.10
我正在尝试遍历一个银行对账单字符串,其中包含七个元素,顺序如下:日期、描述、参考编号、交易日期、提取金额、存款金额和期末余额。描述是字符串中唯一有空格的部分,其余元素没有任何空格。
文本中大约有3.5K行,其中许多都有几个问题,例如:
- 描述中的随机选项卡
- 有时参考编号前没有制表符
- 有时我会看到两个日期,比如
24/12/2021 24/12/2021 sample description REFNO123456 24/12/2021 0.00 100.00 1000.00
- 许多交易没有参考编号,它们仍然被正确地拆分和重新分配?
我已经从我自己的银行对账单中提取了这些数据,这是复制保护的,只有一个库工作,它将其导出为.txt,所以自己格式化似乎是唯一的选择。我现在正在努力修复线路,即使是ChatGPT也无法帮助这个,一直给出不起作用的代码。一个星期了,我只走了1000行。如果你能帮忙的话,我将不胜感激。
示例字符串:24/12/2021 sample description REFNO123456 24/12/2021 0.00 100.00 1000.00
f=open('/bankinfo final.txt','r')
txt=f.readlines()
cleanlist=[]
finalist=[]
for line in txt:
for x in line.split(sep=' '):
if x!='':
cleanlist.append(x)
part1=(cleanlist[0])
part2=(' '.join(cleanlist[1:-6]))
part3=(' '.join(cleanlist[:-7:-1][::-1]))
mashup=part1+'\t'+part2+'\t'.join(part3.split())
finalist.append(mashup)
mashup=''
cleanlist=[]
f.close()
f=open('bankinfo parsed.txt','w')
f.write('\n'.join(finalist))
f.close()
1条答案
按热度按时间jdgnovmf1#
欢迎来到正则表达式(regex)的世界。小心,许多人进入了
regex
的坟墓,但并不是所有人都出来了。任何时候,当你解析字符串时,它只是有点复杂,你可能需要使用
regex
。您正在使用带空格的分割,但是空格不能保证与您观察到的一致,因此是时候做一些不同的事情了。下面的代码实现了您想要的大部分内容(我认为),并演示了findall()
和组的一些关键regex
概念,您可以在文档中查看。使用regex101检查正则表达式的工作也非常方便。你没有在你的问题描述中涵盖所有可能的问题,所以我做了一些假设:
从这样的东西开始,然后建立起来。如果你被卡住了,发布一个新的问题,说明什么样的行给你带来了错误,或者你需要什么类型的逻辑来更好地重新表达。这只是一个框架,你可以从这里工作,并组装你需要保存输出或 Dataframe ,等等。
DATA FILE(带制表符/空格/尾随空格等):
代码:
输出: