多个文件之间的交集

  • 本文关键字:之间 文件 python file
  • 更新时间 :
  • 英文 :


我有多个文件(比如3)。 每个文件只有一列。如下所示:

文件 A

America
Russia
China
UK

文件 B

India
China
Russia

文件 C

China
America
Russia
Iran

现在,为了计算交集或说要获取所有文件中的公共元素,我这样做

python -c 'import sys;print "".join(sorted(set.intersection(*[set(open(a).readlines()) for a in sys.argv[1:]])))' File1 File2 File3 File4

但是,如果我还需要知道这些文件之间的成对重叠,我该如何循环该过程?以便我得到一组存在于所有这些元素中的元素,以及A&B,A&C,C&B中存在的元素。

Python的帮助将不胜感激。

请帮忙

要获取所有文件通用的行,您可以使用:

for f in sys.argv[1:]:
    data = []
    with open(f) as inp:
           lines = set(line.rstrip() for line in  inp)
           data.append(lines)
    common_lines = data[0].intersection(*data[1:])

对于第二部分,请使用 itertools.combs:

from itertools import combinations
for f1, f2 in combinations(sys.argv[1:], 2):
    with open(f1) as inp1, open(f2) as inp2:
        print set(line.rstrip() for line in inp1).intersection(map(str.rstrip,
                                                                           inp2))

您可以简单地使用set

>>> print list(set(open(f1)) & set(open(f2)) & set(open(f3)))

对于特定文件,您可以执行以下操作:

>>> print list(set(open(f1)) & set(open(f2)))
>>> print list(set(open(f1)) & set(open(f3)))
>>> print list(set(open(f2)) & set(open(f3)))

根据@HerrActress的建议,这将处理字符串的n部分:

[i.strip() for i in (set(open(f1)) & set(open(f2)))]

相关内容

  • 没有找到相关文章

最新更新