如何比较两个不同文件中的两个列表?
我刚接触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 个回答
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)))