我们如何比较两个不同文件中的两个列表?

时间:2014-07-23 05:01:27

标签: python python-3.x

我是python的新手,我正在使用python 2.7.6。在我的程序中,我要比较两个不同文件中的两个列表,如下所示:

list1=[1,2,3,4,5,6,7,8,9,10] #this list is in file 'a.txt'
list2=[2,4,6,8,10] #this list in file 'b.txt"
diff = difflib.ndiff(open('a.txt').readlines(),open('b.txt').readlines())

我使用difflib,但我没有得到正确的输出

如何比较这两个列表并打印出差异?

1 个答案:

答案 0 :(得分:2)

如果您想获得仅在一个列表中的值,您可以使用设置差异操作。

>>> list1=[1,2,3,4,5,6,7,8,9,10]
>>> list2=[2,4,6,8,10]
>>> set(list1) - set(list2)
set([1, 3, 9, 5, 7])

如何从文件中读取列表是另一个问题。它取决于文件的格式,您使用的分隔符。假设您的文件每行包含一个项目:

data1 = [int(line.strip()) for line in open("a.txt", 'r')]
data2 = [int(line.strip()) for line in open("b.txt", 'r')]
res = list((set(data1) - set(data2)).union(set(data2) - set(data1)))

您在注释中指出该文件包含一行,其中值以逗号分隔,因此:

data1 = open("a.txt", 'r').readline().strip().split(',')
data2 = open("b.txt", 'r').readline().strip().split(',')
res = list((set(data1) - set(data2)).union(set(data2) - set(data1)))