python - 如何查找文本文件中是否包含整个单词?

标签 python python-3.4

我的代码如下所示:

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/

相关文章:

python - 为什么 anaconda 安装程序没有安装 conda-develop

python - 在列之间添加空间

android - 无法在 Kivy 中为动画选择 id

python - Decimal.quantize 引发 InvalidOperation

python - Scipy signal.find_peaks_cwt 挂断

python - 'NoneType' 对象没有属性 'data'

python - “ float ”对象没有属性 'replace' IP 地址

python - ARP扫描程序

pip - HDF5 库和 header 不匹配错误

python - 迭代具有不同可能字符的字符串