打印"找到匹配"对于搜索所在的每一行,"匹配未找到"如果搜索不在整个文件中

时间:2016-10-02 17:14:37

标签: python python-3.x

我想打印" Match Found"以及如果搜索在文件中的一行中匹配所在的行。注意 - 匹配可以在多行中,如果是这样,它应该打印匹配所在的每一行。我有这部分工作,但我想打印"匹配未找到"如果搜索不在整个文件中,则一次。到目前为止,无论我试过什么,都打印出#34;匹配未找到"对于搜索不存在的每一行,或者打印出#34;匹配未找到"打印完搜索后的行。

f = open("cars.txt", "r+")
search = input("What do you want to search for? ")
for line_split in f:
    if search in line_split:
        print ("You searched for %s." % search)
        print ("Match Found.")
        print (line_split)
        print ("--------------------")
else:
        print ("You searched for %s" % search)
        print ("Match Not Found.")
        print ("--------------------")
f.close

2 个答案:

答案 0 :(得分:0)

else的{​​{1}}块是一个很好的选择,如果你找到一个项目后必须for迭代;但事实并非如此。

我认为您可能需要设置标记而不是使用break并在else完成后进行测试:

for

答案 1 :(得分:0)

首先,我认为你误解了for循环后“else”语句的工作方式。只有在for循环没有中断时才会执行。

n = 10
for idx in range(n):
    if idx > 11:
       print('Yey, we reached {}'.format(idx))
       break
else:
    print('Damn, we almost had it!')

此代码将导致:

Damn, we almost had it!

但如果我们改变n = 20,我们将得到:

Yey, we reached 12

我看到你的代码中没有“中断”,所以它是一个意图错误,或者你只是没有意识到这一点。

我已经被告知,我不会发布下一个解决问题的方法。我只是想让你知道在for循环之外使用“else”语句的区别。