检查Python中的文件中是否存在多个匹配项

时间:2016-03-26 18:26:13

标签: python

用户输入数据。通过文件的所有行检查数据。如果他输入的内容对应于一行,则会打印出来。

如果结果不止一个,我想循环输入过程,直到用户完善他的选择,以便只找到一个结果。 我可以在“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()

3 个答案:

答案 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