在两个csv文件之间匹配python中的值

时间:2015-10-09 10:49:18

标签: python csv comparison

我有两个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

1 个答案:

答案 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 块。