检查Python文件中是否有多个匹配项

2024-09-30 14:21:08 发布

您现在位置: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()

Tags: 文件数据代码用户namein内容search
3条回答

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()

我认为你可以使用正则表达式,导入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

将其包装为无限循环,当匹配计数小于或等于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

相关问题 更多 >