我的代码如下所示:
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,全部分隔在不同的行上。如果我在提示用户输入时输入“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/