我对python很陌生,我有两个csv文件。第一个(more.csv)包含的内容
A123,B456,C789
第二个(减去.csv)包含的内容
B456
我希望当它们相同时,它们将相似的项目存储到一个名为"相同"的变量中
我想它会从以下内容开始:
more = open('more.csv','r')
less= open('less.csv','r')
for item in unitid:
谢谢。
如果它们只是一行,您可以使用set对象(内置python)来比较它们,例如:
>>> a = ['A123','B456','C789','D007']
>>> b = ['B456','D007','E009']
>>> c = list(set(a).intersection(b))
>>> print c
['B456', 'D007']
从文件进行比较的完整方法如下:
def compare( fileA, fileB ):
a_file = open(fileA, 'r')
a_data = a_file.read()
a_file.close()
b_file = open(fileB, 'r')
b_data = b_file.read()
b_file.close()
# compare the contents
a_set = set(a_data.split(','))
b_set = set(b_data.split(','))
return list(a_set.intersection(b_set))
compare('more.csv', 'less.csv')
如果每个文件的交集不止一行,那么你仍然可以使用它,你只需要稍微修改一下——我想把交集存储到一个数组中,表示逐行的相似性或其他什么。
将CSV文件处理成列表后,可以使用collections.Counter
查找重复文件:
from collections import Counter
# after processing your CSV files into two lists:
more_list = ['A123', 'B456', 'C789', 'D007']
less_list = ['B456', 'D007', 'E009']
dupe_counter = Counter(more_list)
dupe_counter.update(less_list)
same_list = [val for val in dupe_counter if dupe_counter[val] > 1]
# same_list will be: ['B456', 'D007']