仅将两个文本文件合并为某个列的公共值

时间:2018-10-10 20:40:54

标签: python

我有两个文本文件:

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

,也就是说,一个组合文件仅包含第一列中公共元素的值。谢谢。

1 个答案:

答案 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