我试图在文本中使用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'