我真的很陌生,我有兩個csv文件。第一個(more.csv)具有比較兩個csv文件的內容並將其存儲到變量中
A123,B456,C789
第二個(less.csv)的含量爲
B456
我想這樣的內容,當他們是相同的,他們存放的類似項目到一個名爲
變量「相同的」我想,這會喜歡的東西開始:
more = open('more.csv','r')
less= open('less.csv','r')
for item in unitid:
謝謝。
我真的很陌生,我有兩個csv文件。第一個(more.csv)具有比較兩個csv文件的內容並將其存儲到變量中
A123,B456,C789
第二個(less.csv)的含量爲
B456
我想這樣的內容,當他們是相同的,他們存放的類似項目到一個名爲
變量「相同的」我想,這會喜歡的東西開始:
more = open('more.csv','r')
less= open('less.csv','r')
for item in unitid:
謝謝。
如果他們只有一條線,你可以使用設置對象(蟒內置)對它們進行比較,例如:
>>> 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']
有沒有辦法不使用列表,但只是csv.reader和for循環? – user1546610 2012-08-01 23:34:13
你是什麼意思「當他們是相同的」?你是說當他們都包含相同的價值,例如都有B456? – 2012-08-01 23:20:39
@Rory Hart:是的。 – user1546610 2012-08-01 23:23:32
你的csv文件只包含一行;如果沒有的話,請至少第二排舉例 – jfs 2012-08-01 23:39:43