1

我有两个文件。一个带有单词列表的文件让我们说 a.txt 和另一个第二行是单词的 csv 文件说 b.csv 。我想检查 a.txt 中的任何单词是否在 b.csv 的第二行中,并且只打印那些不匹配的行。csv 文件中共有 3 行。

到目前为止,我所取得的成就是打印那些包含单词列表中单词的行。但我想要的正是其他行。这是我的代码:

reader = csv.reader(open('b.csv', 'rb'))
op = open('a.txt', 'r')
ol = op.readlines()

for row in reader:
     for word in ol:
         if word==row[1]:
             print row[0],row[1],row[2]

现在我该怎么做才能打印不匹配的行?谢谢!

4

1 回答 1

0

侵入性最小的解决方案(即保持嵌套循环)将类似于

for row in reader:
    match = False
    for word in ol:
        if word==row[1]:
            match = True
            break

    if not match:
        print row[0],row[1],row[2]

或者使用更多的 Python 优点:

for row in reader:
    for word in ol:
        if word==row[1]:
            break
    else:
        print row[0],row[1],row[2]

else:仅当前面的循环正常结束(从未到达 )时才执行该位break

正如 thg435 所建议的,它更简单:

for row in reader:
    if row[1] not in ol:
        print row[0],row[1],row[2]
于 2013-05-22T09:51:07.353 回答