只有在与其他字符间隔开时,如何检查行中的确切字符串?

时间:2017-12-22 05:58:54

标签: python string python-3.x file

我想查看字符串" cute"匹配字符串的一部分。目前它确实如此,但如果"可爱"它甚至可以打印它。与其他角色对抗。

这是我的代码:

if "cute" in line:
    print(line)

但它可能会打印出如 " cuteffi"或" cutei934"。我试过检查"可爱"只有这样:

if "cute" == line:
    print(line)

但是这只会比较整个字符串,即使字符串可能包含内容 "可爱的i934",在这种情况下我会希望它打印整个字符串,因为"可爱"它本身与其他角色间隔开来。

3 个答案:

答案 0 :(得分:2)

您可以迭代文件的行split the line based on whitespace characters,并检查是否有任何拆分字符串等于感兴趣的字。

with open("input.txt", "r") as f:
    for line in f:
        split_words = line.split()
        if "cute" in split_words:
            print(line)

答案 1 :(得分:2)

最简单,使用split

if 'cute' in line.split():
     # ...

或使用regular expressions

import re

if re.search(r'(\s|^)cute(\s|$)', line):
    # ...

这个正则表达式确保“可爱”#39;被空格或行的开头/结尾包围。单独使用单词边界仍然可以与周围的标点符号匹配。

答案 2 :(得分:1)

在这种情况下你需要正则表达式。将字符串cute置于两个\b之间,使cute

严格匹配
>>> line="i am cutei934"
>>> 
>>> if (re.findall(r'\bcute\b',line)):
    print line


>>> line="i am cute"
>>> if (re.findall(r'\bcute\b',line)):
    print line


i am cute
>>> line="i am 123cute"
>>> if (re.findall(r'\bcute\b',line)):
    print line


>>> line="i am cute right?"
>>> if (re.findall(r'\bcute\b',line)):
    print line


i am cute right?
>>>