我是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
,但我没有得到正确的输出
如何比较这两个列表并打印出差异?
答案 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)))