这是我的问题,我有两个文件,我想在那里阅读和打印行.附加():
文件1:
ID1 desc1
ID2 desc2
ID3 desc3
ID4 desc4
文件2:
^{pr2}$我想要的是:
ID1 random1 desc1
ID5 random5 desc5
ID6 randomI nothing
但是,我当前的代码:
address = {}
with open('address.txt', 'r') as f:
rows = (line.rstrip().split('\t') for line in f)
address = { row[0]:row[1:] for row in rows }
for key, value in address.items():
with open('families.txt', 'r') as f:
for line in f.readlines():
line = line.rstrip('\n')
line = line.split('\t')
if line[0] == key:
line.append(str(address[key]))
print ('\t'.join(line))
else:
line.append('nothing')
print ('\t'.join(line))
但是,我得到了一个循环
ID1 random1 desc1
ID5 random5 nothing
ID6 randomI nothing
ID1 random1 nothing
ID5 random5 desc5
ID6 random6 nothing
另外,如果有人能建议最好的方法来丢弃作为我字典末尾“值”一部分的方括号。在
试着这样做:
我认为你最好把每个文件都读入词典。不要在“for”循环中重新读取第二个文件。在
然后,创建第三个字典。在
重复dict1:
或者
^{pr2}$然后,您可以创建第三个字典,它将使用相同的键,但值将是一个元组。对于迭代中的每个键,如果键存在于dict1中,那么元组的第一部分就是值。如果它不存在,元组的第一部分就是“无”。然后对第二个dict执行相同的操作,对于第二个值。在
然后迭代dict2,并执行相同的操作;只需检查每个键;如果它已经在新dict中,则不要处理它-它已经被处理了,只需继续。在
一旦你有了这个新的dict,你可以用任何你想要的方式来格式化它。This post提供了很多格式化选项。在
我删除了一些不必要的东西,希望能清理掉一些东西。。。在
我删除了对}方法在默认情况下会自动处理这些字符。在
'\n'
和'\t'
的引用,因为.rstrip()
和{我利用for语句中的元素unpacking将每行的第一个和第二个项解压为}值,以便插入字典。在
^{pr2}$x
和{在本例中,不需要遍历families文件中的行和地址字典中的项。字典是为查找关键字而优化的,因此我们只需循环查看族文件并在字典中查找。在
相关问题 更多 >
编程相关推荐