繁体   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