python – 替换多次出现的字符串中的模式

我有一个字符串:

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?"
上一篇:python-用任意参数替换sympy函数


下一篇:python-匹配模式与文本之间