我有两个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
答案 0 :(得分:0)
将您的上一个else
块移至else
的{{1}}块。所以你的for loop
会是这样的: -
for loop
只有在遍历整个第二个文件之后,才能得出结论“找不到匹配项”。如果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
块。