簡體   English   中英

比較兩個CSV文件並查找匹配的Python

[英]Compare two CSV files and look for matches Python

我有兩個類似的CSV文件

CSV1

H1,H2,H3
arm,biopsy,forearm
heart,leg biopsy,biopsy

organs.csv

arm
leg
forearm
heart
skin

我需要比較兩個文件並獲得像[arm,forearm,heart,leg]這樣的輸出列表,但是我當前正在使用的腳本沒有給我任何輸出(盡管我也希望leg在輸出中,它與活檢混合在同一個細胞中)。 到目前為止,這是代碼。 如何獲得所有匹配的單詞?

import csv
import io

alist, blist = [], []

with open("csv1.csv", "rb") as fileA:
    reader = csv.reader(fileA, delimiter=',')
    for row in reader:
        alist.append(row)
with open("organs.csv", "rb") as fileB:
    reader = csv.reader(fileB, delimiter=',')
    for row in reader:
        blist.append(row)

first_set = set(map(tuple, alist))
secnd_set = set(map(tuple, blist))

matches = set(first_set).intersection(secnd_set)
print matches

嘗試這個:

import csv

alist, blist = [], []

with open("csv1.csv", "rb") as fileA:
    reader = csv.reader(fileA, delimiter=',')
    for row in reader:
        for row_str in row:
            alist += row_str.strip().split()

with open("organs.csv", "rb") as fileB:
    reader = csv.reader(fileB, delimiter=',')
    for row in reader:
        blist += row

first_set = set(alist)
second_set = set(blist)

print first_set.intersection(second_set)

基本上,通過csv閱讀器遍歷csv文件將返回一行,該行是諸如[[arm],'biopsy','forearm']之類的項(字符串)的列表,因此您必須對列表求和才能插入所有項目。

另一方面,要刪除重復項,只需要通過set()函數進行一次集合轉換,而交集方法將返回另一個包含元素的集合。

將部分讀數從csv1.csv更改為:

with open("csv1.csv", "rb") as fileA:
    reader = csv.reader(fileA, delimiter=',')
    for row in reader:
        # append all words in cell
        for word in row:
            alist.append(word)

我會將CSV文件視為文本文件,在第一和第二秒中獲得所有單詞的列表,然后遍歷第一列表以查看是否與第二列表完全匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM