#import pandas as pd
#import openpyxl
f = open('103041') #读取文本
a=f.readlines()
total=len(a)
total=len(a)
b=[]
c = []
d = []
n=0
m = 0
output={}#定义输出的字典
for line in a: #
n+=1
if "商户号" in line: #判断商户号并取出商户号到C列表
b=line.strip().split()
c.append(b[2].strip().split(":")[1])
d.append(n) #判断商户号所在行,以便接下来读商户号所属的行
for line1 in a:
m+=1
if int(d[0])<m <int(d[1]): #判断行在两个读取的两个商户号之间的行时,将商户号作为KEY,行作为VALUES写入字典
if ".00" in line1:
output[c[0]]=line1.strip().split("|")
if int(d[1])<m <int(d[2]): #判断行在两个读取的两个商户号之间的行时,将商户号作为KEY,行作为VALUES写入字典
if ".00" in line1:
output[c[1]]=line1.strip().split("|")
if int(d[2])<m< total: #判断行在两个读取的两个商户号之间的行时,将商户号作为KEY,行作为VALUES写入字典
if ".00" in line1:
output[c[2]]=line1.strip().split("|")
print (output)
但输出后显示不对:
D:\python\lqy\ceshi>python read_new.txt
{'104660000000643': ['黄海霞 ', '袁天一
', '借记卡 ', '62357360000000
009 ', '20.00 ', '0.00 ', '20.00
', '']}
D:\python\lqy\ceshi>只显示了最后一个商户号和最后一行数据
请大神帮忙查看原因或有更简单的写法
你试试这样是否可以
1. 用pd.read_csv()读取txt文件
2 . 数据整理
3. 用df.set_index('变量名').T.to_dict('list') 转换成你需要的字典格式, 字典里面前面是关键字, 后面是一个列表.
像这样
{'p': [1, 3, 2], 'q': [4, 3, 2], 'r': [4, 0, 9]}