我有一根绳子:

I am Tony not charlie, Hey charlie how's you?

我想换掉第二个“查理”,但不是第一个。
需要的字符串:
I am Tony not charlie, Hey Tony how's you?

我用下面的语句来做这个
>>> re.sub(r',\s\w{3}\scharlie\s', ' Tony ', 'I am Tony not charlie, Hey charlie how\'s you\?')
"I am Tony not charlie Tony how's you?"

但它取代了我想要的。
我怎么能让它只替换第二个“查理”而不替换其他的?

最佳答案

你需要在表达式中使用分组。
看看这是不是你想要的:

>>> re.sub(r'(,\s\w*\s)charlie', r'\1Tony', r"I am Tony not charlie, Hey charlie
 how's you?")
"I am Tony not charlie, Hey Tony how's you?"

08-26 22:49