【发布时间】:2013-11-22 22:10:57
【问题描述】:
我有两个文件。一个有两列,ref.txt。另一个有三列,file.txt。
在 ref.txt 中,
1 2
2 3
3 5
在file.txt中,
1 2 4 <---here matching
3 4 5
6 9 4
2 3 10 <---here matching
4 7 9
3 5 7 <---here matching
我想比较每个文件的两列,然后只打印 file.txt 中与 ref.txt 匹配的行。
所以,输出应该是,
1 2 4
2 3 10
3 5 7
我认为两个字典比较之类的,
mydict = {}
mydict1 = {}
with open('ref.txt') as f1:
for line in f1:
key, key1 = line.split()
sp1 = mydict[key, key1]
with open('file.txt') as f2:
for lines in f2:
item1, item2, value = lines.split()
sp2 = mydict1[item1, item2]
if sp1 == sp2:
print value
如何将两个文件与字典或其他文件进行适当的比较?
我找到了一些 perl 和 python 代码来解决两个文件中相同数量的列。
在我的例子中,一个文件有两列,另一个有三列。
如何比较两个文件,只打印匹配的值?
【问题讨论】:
-
类似
for i in (ref.txt) do grep "^$i" file.txt; done的东西会接近。 -
file.txt中的条目0 1 2是否被视为匹配项?基本上,ref.txt中的条目必须在file.txt行的任何位置找到,还是必须在start with行的值? -
这里有一个类似的问题:stackoverflow.com/q/17490570/1967396 - 它想在某些列上匹配(但在这种情况下这些列被混淆了 - 比你的问题更难)。答案很有趣,值得一读。
-
感谢所有cmets。
标签: python perl comparison