用python在两个csv文件之间匹配值
我有两个CSV文件,需要从中提取正确的匹配项。我想比较第一个文件中的每一行,并说明它是否在文件2中的任何一行具有匹配值。如果找到匹配项,则转到fileOne中的下一行并重复 下面是我到目前为止的代码,但它似乎只是直接在每个文件行之间进行比较。因此,只将文件1中的第一行与文件2中的第一行进行比较,而不是在文件2中的所有行之间循环,直到找到匹配或没有匹配为止 我怀疑这与我如何设置for循环有关,但我不确定用python在两个csv文件之间匹配值,python,csv,comparison,Python,Csv,Comparison,我有两个CSV文件,需要从中提取正确的匹配项。我想比较第一个文件中的每一行,并说明它是否在文件2中的任何一行具有匹配值。如果找到匹配项,则转到fileOne中的下一行并重复 下面是我到目前为止的代码,但它似乎只是直接在每个文件行之间进行比较。因此,只将文件1中的第一行与文件2中的第一行进行比较,而不是在文件2中的所有行之间循环,直到找到匹配或没有匹配为止 我怀疑这与我如何设置for循环有关,但我不确定 import csv fileOne = csv.reader(open("fileone.
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
将上一个
else
块作为else
块移动到for循环
。因此,循环的如下所示:-
file2items = [row2 for row2 in fileTwo]
for row1 in fileOne:
for row2 in file2items:
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
只有在遍历整个第二个文件之后,您才会得出“未找到匹配项”的结论。如果for循环在其迭代过程中从未中断(即未找到匹配项),则会触发此else
块。csv.reader
是迭代器-请尝试使用,例如fileOne=list(…)
。谢谢,这非常有效。这仍然存在fileOne
和fileTwo
是迭代器的问题,因此,将在第一次迭代时使用。