【发布时间】:2015-10-09 10:49:17
【问题描述】:
我有两个 CSV 文件需要从中提取正确的匹配项。我想比较第一个文件中的每一行,并说明它是否在文件二中的任何行都有匹配值。如果找到匹配项,则听起来会转到 fileOne 中的下一行并重复。
下面是我到目前为止的代码,但它似乎只是直接在每个文件行之间进行比较。因此,文件一中的第一行仅与文件二中的第一行进行比较,而不是遍历文件二中的所有行,直到找到匹配项或未找到匹配项。
我怀疑这与我设置 for 循环的方式有关,但我不确定。
import csv
fileOne = csv.reader(open("fileone.csv", "r"))
fileTwo = csv.reader(open("filetwo.csv", "r"))
for row1 in fileOne:
for row2 in fileTwo:
row1String = row1[1].upper() + row1[0].upper()
row2String = row2[1].upper() + row2[0].upper()
if row1String == row2String:
print "Matched %s, %s, %s" % (row1[1], row2[1], row1[0])
break
else:
print "No Match, %s" % (row1[0])
break
【问题讨论】:
-
csv.reader是一个迭代器 - 试试例如fileOne = list(...). -
谢谢,效果很好。
标签: python csv comparison