我的代码如下所示:

file = open('names.txt', 'r')
fileread = file.read()
loop = True
while loop is True:
    with open('names.txt', 'r') as f:
        user_input = input('Enter a name: ')
        for line in f:
            if user_input in line:
                print('That name exists!')
            else:
                print('Couldn\'t find the name.')


该代码基本上要求用户输入一个名称,如果该名称存在于文本文件中,则该代码表示​​该名称存在,但如果不存在,则表示找不到该名称。

我唯一的问题是,即使您输入名称的一部分,它也会告诉您整个名称存在。例如,我的文本文件中的名称是:Anya,Albert和Clemont,它们都以不同的行分开。如果在提示输入user_input时我要输入“ a”,则代码仍会说该名称存在,并且只会询问其他名称。我知道为什么要这样做,因为从技术上讲'a'在行中,但是我如何制作它,以便仅在输入整个内容时才说名称存在?整体而言,我的意思是他们输入的是“ Anya”,而不是“ a”,而代码仅表示如果输入“ Anya”,则该名称存在。谢谢

最佳答案

使用re.seach()函数的简短解决方案:

import re

with open('lines.txt', 'r') as fh:
    contents = fh.read()

loop = True
while loop:
    user_input = input('Enter a name: ').strip()
    if (re.search(r'\b'+ re.escape(user_input) + r'\b', contents, re.MULTILINE)):
        print("That name exists!")
    else:
        print("Couldn't find the name.")


测试用例:

Enter a name: Any
Couldn't find the name.

Enter a name: Anya
That name exists!

Enter a name: ...

关于python - 我如何查找整个单词是否在文本文件中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42030664/

10-12 00:48