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

问题描述 投票:2回答:3

我想检查字符串“cute”是否匹配字符串的一部分。目前,它确实如此,但如果“可爱”与其他角色对比,它甚至会打印出它。

这是我的代码:

if "cute" in line:
    print(line)

但它可能会打印“cuteffi”或“cutei934”等行。我试过检查“可爱”只是这样:

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

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

python string python-3.x file
3个回答
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)

2
投票

最简单,使用split

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

或者使用regular expressions

import re

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

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


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?
>>> 
© www.soinside.com 2019 - 2024. All rights reserved.