在python中退出嵌套for循环

时间:2015-06-08 22:14:15

标签: python csv python-3.x

我想搜索一个csv文件,该文件将从前两列的列表中查找关键字。当找到关键词时,我设法让它工作,但是如果找不到关键词,则想要留言。不幸的是,“未找到”的消息出现了四次。我只是希望这一次出来。你能帮忙吗?它正在做的是再次绕过每个关键词。

import csv
keywords=["none","blank","off","screen","blank"]
f=open("CSVSolutions.csv")
for row in csv.reader(f):
    for keyword in keywords:
        if keyword == row[0] or keyword == row[1]:
            print(row[2])
            break
        else:
            print ("not found")
            break
f.close

3 个答案:

答案 0 :(得分:3)

只有在整个文件中找不到关键字时,您似乎想要发出“未找到”消息吗?

试试这个:

import csv
keywords=["none","blank","off","screen","blank"]
f=open("CSVSolutions.csv")

for row in csv.reader(f):
    found = False;
    for keyword in keywords:
        if keyword == row[0] or keyword == row[1]:
            print(row[2])
            found = True
            break
    if not found:
        print ("not found")
        break

f.close()

重点是您应该使用另一个变量来跟踪您正在寻找的状态。

答案 1 :(得分:3)

您可以像这样使用for.. else here

for keyword in keywords:
    if keyword == row[0] or keyword == row[1]:
        break
else:
    print("not found")

答案 2 :(得分:0)

import csv
keywords=["none","blank","off","screen","blank"]

f=open("CSVSolutions.csv")
for row in csv.reader(f):
    if row[0] in keywords or row[1] in keywords:
        print(row[2])
    else:
        print ("not found")
f.close

我认为避免嵌套完全更容易。迭代关键字列表两次似乎更慢,但它基本上相当于每个项目进行两次比较。