我想一次替换多个子字符串,例如,在下面的语句中,我想用cat 替换狗,用狗替换cat :
我有一只狗,但没有cat .
然而,当我使用顺序替换string.replace('dog', 'cat')
,然后使用string.replace('cat', 'dog')
时,我得到以下结果.
我有一只狗,但没有狗.
我有一个很长的替换列表要一次完成,所以用TEMP嵌套替换不会有什么帮助.
我想一次替换多个子字符串,例如,在下面的语句中,我想用cat 替换狗,用狗替换cat :
我有一只狗,但没有cat .
然而,当我使用顺序替换string.replace('dog', 'cat')
,然后使用string.replace('cat', 'dog')
时,我得到以下结果.
我有一只狗,但没有狗.
我有一个很长的替换列表要一次完成,所以用TEMP嵌套替换不会有什么帮助.
使用re.sub
的一种方法:
import re
string = "I have a dog but not a cat."
d = {"dog": "cat", "cat": "dog"}
new_string = re.sub("|".join(d), lambda x: d[x.group(0)], string)
输出:
'I have a cat but not a dog.'