比较两个 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] 但我目前正在处理的脚本没有给我任何输出(我也想要腿在输出中,尽管它与同一单元格中的活组织检查混合在一起)。到目前为止,这是代码。我怎样才能得到所有匹配的词?
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 reader returns 遍历 csv 文件的一行是这样的项目(字符串)列表 ['arm', 'biopsy' , 'forearm'], 因此您必须对列表求和才能插入所有项目。
另一方面,要删除重复项,只需通过 set() 函数进行一个集合转换,交集方法 returns 另一个包含元素的集合。
我会将 CSV 文件视为文本文件,获取第一个和第二个中所有单词的列表,然后遍历第一个列表以查看是否与第二个列表中的任何单词完全匹配。
将部分读数从 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文件CSV1
H1,H2,H3
arm,biopsy,forearm
heart,leg biopsy,biopsy
organs.csv
arm
leg
forearm
heart
skin
我需要比较这两个文件并获得这样的输出列表 [arm,forearm,heart,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 reader returns 遍历 csv 文件的一行是这样的项目(字符串)列表 ['arm', 'biopsy' , 'forearm'], 因此您必须对列表求和才能插入所有项目。
另一方面,要删除重复项,只需通过 set() 函数进行一个集合转换,交集方法 returns 另一个包含元素的集合。
我会将 CSV 文件视为文本文件,获取第一个和第二个中所有单词的列表,然后遍历第一个列表以查看是否与第二个列表中的任何单词完全匹配。
将部分读数从 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)