我想检查字符串“cute”是否匹配字符串的一部分。目前,它确实如此,但如果“可爱”与其他角色对比,它甚至会打印出它。
这是我的代码:
if "cute" in line:
print(line)
但它可能会打印“cuteffi”或“cutei934”等行。我试过检查“可爱”只是这样:
if "cute" == line:
print(line)
但是这只会比较整个字符串,即使字符串可能有“cute i934”这样的内容,在这种情况下我会希望它打印整个字符串,因为“可爱”本身就是与其他字符间隔开来的。
您可以迭代文件的行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)
最简单,使用split
:
if 'cute' in line.split():
# ...
或者使用regular expressions:
import re
if re.search(r'(\s|^)cute(\s|$)', line):
# ...
这个正则表达式确保'可爱'被空格或行的开头/结尾所包围。单独使用单词边界仍然会与周围的标点符号相匹配。
在这种情况下你需要正则表达式。通过在两个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?
>>>