我正在编写一个程序,只根据部分字符串搜索特定行的txt文件。如果找不到该字符串,则应该打印一次未找到,但它会多次打印。即使在缩进和使用正确的代码后,它仍会打印出来:
答案 0 :(得分:1)
else套件在for正常终止后执行(而不是中断)。 所以它肯定会在你的代码中执行else语句,因为你不会在for循环中中断。
答案 1 :(得分:0)
你对else有错误的缩进,这是正确的代码:
num = raw_input("Type Number : ")
search = open("TableOfProducts.txt","r")
for line in search.readlines():
if num in line:
print line
else:
print ("invalid code. ")
break
这不会引发错误的原因是因为for
循环也可以有一个else
块,只有在循环中没有元素时才会显示。
答案 2 :(得分:-1)
您也可以尝试使用try
/ except
。这样,如果上面的代码找不到匹配项,您可以提供“无效”消息。见下文。
num = raw_input("Type Number: ")
with open('TableOfProducts.txt', "r") as search:
for line in search.readlines():
if num in line:
goodline = line
try:
print goodline
except:
print "Invalid code."
它不断重复的原因是因为代码会检查每一行,并且只要没有匹配,对于不匹配的每一行都会打印“无效代码”(即使它已经找到了一行)< / p>
PS:除非您使用with
,否则请确保将search.close()
放在最后