如图,需要拿到红色框中的三个数据,中间黄色框的数据量不定。刚拿到需求的时候,头痛,没思路,无从下手。无法通过切片去获得,因为不知道中间黄色区域的数据量有多少。
后面想到一个比较方便的方法,代码如下
date = []
with open('C:/file/test/test1/201905/20190330.txt',encoding='gbk',errors='ignore') as f:
words = f.readlines()
for i,rows in enumerate(words):
ret3 = re.findall(r'[^\.\d](\d+\.\d+|\d+)[^\.\d]', rows)
if ret3 == []:
pass
else:
date.append(ret3)
print(date)
sh_nu = date[1][1] # 商户号
fs_nu = date[-1][0] # 发生额
hc_nu = date[-1][1] # 回扣费
print(sh_nu,fs_nu,hc_nu)
解决思路:
通过分析文本中所需要数据的规律可以得到,需要的数据总会在文本的第三行和最后一行,它不会随着黄色区域数据量的变
化而变化,而且,所需的数据都是数字。这样我们通过正则表达式,匹配所有数字,加入列表。要的数据总会在第二个列表和
最后一个列表中,这样就可以快速的拿到所需的数据了。测试了黄色区域数据量较大的文本,也是可以轻松拿到的。
心得:
可能其他项目很少会遇到同样的问题。但是在拿到需求时,如果一眼看上去,挺难的,挺复杂的。我们可以先去找到规律,
分析一下。想好思路,这样开发起来就容易了。