我试图在文本中使用python替换两个字符串: text="This is a rhopialg, not a rhopi" 我想通过"myrhopialg"替换"rhopialg",用"myrhopi"替换"rhopi"

如果我使用text.replace('rhopialg' , 'myrhopialg').replace('rhopi','myrhopi'),结果是 "This is a mymyrhopialg, not a myrhopi.",第一个单词替换了两次,不正确。

替换后的预期结果是:"This is a myrhopialg, not a myrhopi"

如何实现这一目标仅确保一次替换?

分析解答

使用正则:

import re

text = "This is a rhopialg, not a rhopi"

out = re.sub('rhopialg|rhopi' , 'myrhopi', text)

或者,限制全词:

out = re.sub(r'\b(rhopialg|rhopi)\b' , 'myrhopi', text)

为了压缩正则表达式,由于字符串的一部分很常见:

out = re.sub(r'\brhopi(?:alg)?\b' , 'myrhopi', text)

输出:'This is a myrhopi, not a myrhopi'