用户输入数据。通过文件的所有行检查数据。如果他输入的内容对应于一行,则会打印出来。
如果结果不止一个,我想循环输入过程,直到用户完善他的选择,以便只找到一个结果。
我可以在“mutipleAnswersAreFound
”处使用什么?
我的代码:
def search()
with open("file.txt") as f:
nameSearch = str(raw_input("Enter first name, last name, email, or phone: "))
for line in f:
if nameSearch in line:
print line
else if 'mutipleAnswersAreFound' :
search()
答案 0 :(得分:1)
line.count(nameSearch)
将返回nameSearch
出现在字符串line
中的次数。如果此计数超过1,那么您就拥有elif
个案例。
例如
"aaa".count("aa")
将返回2,因为我们有两次出现的字符串“aa”
您的代码看起来像
cnt = line.count(nameSearch)
if cnt == 1:
print line
elif cnt > 1:
search()
如果您希望事件以空格分隔,那么您可以执行此操作
words = line.split()
cnt = 0
for word in words:
if nameSearch == word: cnt += 1
if cnt > 1: break
if cnt == 1:
print line
elif cnt > 1:
search()
答案 1 :(得分:0)
将其包裹在无限循环中,当匹配计数低于或等于1时将其中断。
def search()
while True:
count=0
with open("file.txt") as f:
nameSearch = str(raw_input("Enter first name, last name, email, or phone: "))
for line in f:
if nameSearch in line:
print line
count+=1
if count > 1 :
print 'Multiple matches, please refine your search'
else:
break
答案 2 :(得分:0)
我认为你可以使用正则表达式,在python中导入re。 例如:
import re
expression = re.compile('(wordto)')
example = ' hi worldto, how are wordto xD wordto'
matches = expression.findall(example)
if matches:
print matches
print 'the count is', len(matches)
>>>['wordto', 'wordto']
>>>the count is 2