我正在阅读一个文本文件,我将其转换为(键,对)数组。如果我有与管道分隔符相同的键,我想附加值。我是python的新手,有人可以帮我解决这个问题。请找到我的代码和输入输出格式:
文件输入:(test.txt)
1234567 E29dceffb-28bd-4f05-b91f-03f05510c081,0743,438864,10/06/2016,7,IK,PP,7136977,,4,37791,,,,01/11/2017
83738383 E29dceffb-38373-3839-8393-83038383,0743,438864,10/06/2016,7,PO,VC,4,37791,,,,01/11/2017
1234567 E29dceffb-38DFG3-4f05-0393-39303933,1234,78789,10/06/2016,7,LL,YY,7136977,,4,37791,,,01/10/2017
Python代码:
import sys
with open('test.txt') as f:
result = dict(line.split(' ', 1) for line in f)
for line in list:
if line[0] in result:
result[line[0]].append(line[1])
else:
result[line[0]] = [line[1]]
我想打印我的密钥和值,如下所示:
Key: 1234567.AB.K
Value: E29dceffb-28bd-4f05-b91f-03f05510c081,0743,438864,10/06/2016,7,IK,PP,7136977,,4,37791,,,,01/11/2017|E29dceffb-38DFG3-4f05-0393-39303933,1234,78789,10/06/2016,7,LL,YY,7136977,,4,37791,,,01/10/2017|
Key: 83738383.AB.K
Value: E29dceffb-38373-3839-8393-83038383,0743,438864,10/06/2016,7,PO,VC,4,37791,,,,01/11/2017|
如果同一个键出现多个值以区分第一个记录,第二个记录等,则使用管道分隔符。
我将在test.txt文件中获得大约2百万条记录。
我在python中如何有效地处理这个问题。我的python脚本没有按预期工作,如果我尝试附加相同键的值,它会破坏代码。
非常感谢任何帮助! 提前谢谢。
答案 0 :(得分:0)
我不确定list
循环上的for
。
当您尝试为同一个键附加值时代码中断的原因是因为您创建result
作为字典,每个值都是一个字符串。
您需要为最终结果创建result_dict
,例如
result_dict = {}
with open('test.txt') as f:
lines = list(line.split(' ', 1) for line in f)
for line in lines:
if line[0] in result_dict:
result_dict[line[0]].append(line[1].strip())
else:
result_dict[line[0]] = [line[1].strip()]
print(result_dict)
将打印
{'1234567.AB.K': ['E29dceffb-28bd-4f05-b91f-03f05510c081,0743,438864,10/06/2016,7,IK,PP,7136977,,4,37791,,,,01/11/2017', 'E29dceffb-38DFG3-4f05-0393-39303933,1234,78789,10/06/2016,7,LL,YY,7136977,,4,37791,,,01/10/2017'], '83738383.AB.K': ['E29dceffb-38373-3839-8393-83038383,0743,438864,10/06/2016,7,PO,VC,4,37791,,,,01/11/2017']}