匹配文件中的单词列表并输出剩余单词

时间:2013-05-22 09:45:43

标签: python regex

我有两个文件。一个单词列表让我们说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]

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

1 个答案:

答案 0 :(得分: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]