1

私はPythonが初めてで、2つのcsvファイルがあります。最初のもの (more.csv) の内容は次のとおりです。

A123,B456,C789

2 つ目 (less.csv) の内容は次のとおりです。

B456

それらが同じ場合、同様のアイテムを「same」という変数に格納するようにしたい

私はそれが次のようなものから始まると思います:

more = open('more.csv','r')
less= open('less.csv','r')
for item in unitid:

ありがとうございました。

4

2 に答える 2

2

それらが 1 行だけの場合は、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')

それらがファイルごとに複数の行である場合でも、これを使用できます。少し変更するだけで済みます-交点を行ごとの類似性を表す配列に格納すると思いますか何か。

于 2012-08-01T23:38:36.177 に答える
1

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']
于 2012-08-01T23:30:19.490 に答える