首页 > 解决方案 > 用另一个词替换一个词的每个实例,而不会破坏包含该词的其他词

问题描述

词,词,词...对不起标题。

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

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

# new_str -> "no eno noterday no"

如何通过将“是”更改为“否”来保持“眼睛”和“昨天”的原样。

标签: pythonpython-3.xstringreplace

解决方案


你可以re在这里使用。

re.sub(r'\byes\b','no',"yes eyes yesterday yes")
# 'no eyes yesterday no'

来自文档

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


推荐阅读