我的代码如下所示:
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/