将一个单词的每个实例替换为另一个单词,而不破坏包含该单词的其他单词

Usu*_*ess 1 python string replace python-3.x

字,字,字......对不起这个标题。

假设我想将字符串中的每个“是”实例替换为“否”。我可以只使用 string.replace()。但随之而来的就是这个问题:

string = "yes eyes yesterday yes"
new_str = string.replace("yes", "no")

# new_str -> "no eno noterday no"
Run Code Online (Sandbox Code Playgroud)

我怎样才能保留“眼睛”和“昨天”,将“是”改为“否”。

Ch3*_*teR 5

你可以re在这里使用。

re.sub(r'\byes\b','no',"yes eyes yesterday yes")
# 'no eyes yesterday no'
Run Code Online (Sandbox Code Playgroud)

文档

\b- 匹配空字符串,但仅匹配单词的开头或结尾。单词被定义为单词字符的序列。请注意,形式上,被定义为 a和字符\b之间的边界(反之亦然),或者字符串的开头/结尾之间的边界。这意味着匹配, , ,但不匹配。\w\W\wr'\bfoo\b''foo''foo.''(foo)''bar foo baz''foobar' or 'foo3'