查找列表相似之处 - set(a).intersection(b) 不处理逐行读取的文件

Find list similarities - set(a).intersection(b) not working on file read line by line

我在这个页面上找到了查找列表相似点(或不同点)的代码:How can I compare two lists in python and return matches

>>> set(a).intersection(b)
set([5])

但是,当我将我制作的列表与通过读取文件制作的列表进行比较时,它不起作用:

myvalues = ['a1', '2b', '3c']    # same values found in values.txt, line by line 

with open('values.txt', 'r') as f:
    filevalues = f.readlines()

for line in filevalues:
    line = line.strip()

matches = set(myvalues).intersection(filevalues)
print matches

output: 
set([])

它确实适用于我在脚本本身中创建的两个略有不同的列表,并且当我将文件值与文件值进行比较时确实有效。不确定我遗漏了什么,但我猜这个问题与通过读取文件行创建的列表的类型或格式有关。

有人知道如何解决这个问题吗?

f.readlines() 的元素将以 \n 字符结束,这就是为什么您得到零匹配的原因。

回复评论:

That's what I thought, but I'm even doing this before the comparison: for line in filevalues: line = line.strip()

您的循环对 filevalues 中的行没有任何作用。使用

filevalues = [x.strip() for x in filevalues]