我有两个带有键和值的文件。我正在尝试将它们与相应的key
和value
合并。密钥存在于value1
中的file1
和value2
中的file2
中。这些文件有很多列,两个文件中的key
都在col[0] col[1]
我想尝试这样的事情:
key value1 value2
代码:
from collections import defaultdict
d2 = {}
with open('file2.txt', 'r') as file2:
for row in file2:
cols = row.strip().split()
#print(cols);
key = cols[0], cols[1]
value1 = cols[4]
with open('file1.txt', 'r') as file1:
for row in file1:
cols = row.strip().split()
#print(cols);
key = cols[0], cols[1]
value2 = cols[2]
print ("%s %s %s %s\n" % (d2[cols[0]], d2[cols[1]], d2[cols[4]], d2[cols[2]]))
Error:
Traceback (most recent call last):
File "test_two.py", line 21, in <module>
print ("%s %s %s %s\n" % (d2[cols[0]], d2[cols[1]], d2[cols[4]], d2[cols[2]]))
KeyError: '3545' (first line)
答案 0 :(得分:2)
for d in (file1,file2):
此处,f
是您的某个文件。
for key, value in d:
如果迭代文件,则会得到行(字符串)。当您遍历一行(字符串)时,您将获得字符。因此,除非文件中的所有行都是两个字符长,否则for key, value in d
将失败。
您的其余代码(cols = row.strip().split()
)似乎是正确的,但不清楚row
来自哪里。正如Ashwini Chaudhary所说,你可能想要for row in d