Python 匹配文件中的单词列表并输出剩余单词
我有两个文件。一个是单词列表,比如a.txt,另一个是csv文件,第二行是单词,比如b.csv。我想检查a.txt中的任何单词是否位于b.csv的第二行,并只打印那些不匹配的行。csv文件中总共有3行 到目前为止,我所取得的成就是打印那些包含单词列表中的单词的行。但我要的正是其他的线路。这是我的密码:Python 匹配文件中的单词列表并输出剩余单词,python,regex,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 r
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]
现在我该怎么打印不匹配的行呢?
谢谢 侵入性最小的解决方案(即保持嵌套循环)应该是
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:
位仅在前一循环正常结束时执行(从未达到中断
)
正如thg435所建议的,它更简单:
for row in reader:
if row[1] not in ol:
print row[0],row[1],row[2]
谢谢但我很惊讶“其他”是一个比原来的“如果”更倒退的意思。这是平常的事吗?对我来说是新的。
else
属于的第二个:我明白了。我从来不知道这件事。这确实是一个很好的教训。谢谢!:)如果第[1]行不在ol中,我想您可以用简单的替换中的。)@thg435哦。。。我可能应该用python编写更多代码;)。谢谢你的建议,答案已编辑。