我有两个文本文件:
text1.txt:
std::string MyFunction(int test) const { ... }
text2.txt:
jose 50 0.037
maria 30
fernando 20 0.489
martin 45 0.078
andres 47
我想重现一下:
maria 150 0.91
martin 200 0.76
andres 350 0.67
,也就是说,一个组合文件仅包含第一列中公共元素的值。谢谢。
答案 0 :(得分:2)
您可以从每个输入源创建两个字典,以检查公用名:
d1 = (lambda x:{a:b for a, *b in x})([i.strip('\n').split() for i in open('file1.txt')])
d2 = (lambda x:{a:b for a, *b in x})([i.strip('\n').split() for i in open('file2.txt')])
with open('file3.txt', 'w') as f:
for a, b in d1.items():
if a in d2:
f.write(f"{a} {' '.join(d2[a]+b)}\n")
输出:
maria 150 0.91 30
martin 200 0.76 45 0.078
andres 350 0.67 47