假设我有一句话:
bean likes to sell his beans
我想用其他单词替换所有出现的特定单词。例如,bean
到robert
和beans
到cars
。
我不能只使用str.replace
,因为在这种情况下,它会将beans
更改为roberts
。
>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
我只需要改变整个单词,而不需要改变单词在另一个单词中的出现。我认为我可以通过使用正则表达式来实现这一点,但我不知道如何正确地实现它。
如果使用regex,可以使用
\b
指定单词边界:这里的“beans”没有被更改(改为“roberts”),因为末尾的“s”不是单词之间的边界:
\b
匹配空字符串,但只在单词的开头或结尾。完整性的第二个替代:
将“beans”的所有实例替换为“cars”,将“beans”替换为“robert”。这是因为
.replace()
返回原始字符串的修改实例。因此,你可以分阶段考虑。它基本上是这样工作的:如果你一次替换一个单词,你可能会替换好几次(而不是得到你想要的)。为了避免这种情况,可以使用函数或lambda:
这样,一旦
bean
被robert
替换,它就不会被再次修改(即使robert
也在您的单词输入列表中)。正如georg所建议的,我用
dict.get(key, default_value)
编辑了这个答案。 替代解决方案(也由georg建议):相关问题 更多 >
编程相关推荐