我想一次替换多个子字符串,例如,在下面的语句中,我想用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.'

Python相关问答推荐

Vectorize多个头寸的止盈/止盈回溯测试pythonpandas

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

Python中绕y轴曲线的旋转

如何使用它?

SQLAlchemy Like ALL ORM analog

Python脚本使用蓝牙运行在Windows 11与raspberry pi4

Python中的变量每次增加超过1

旋转多边形而不改变内部空间关系

使用Python查找、替换和调整PDF中的图像'

在单次扫描中创建列表

如何使用使用来自其他列的值的公式更新一个rabrame列?

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

不允许 Select 北极滚动?

Tensorflow tokenizer问题.num_words到底做了什么?

jsonschema日期格式

需要帮助使用Python中的Google的People API更新联系人的多个字段'

对数据帧进行分组,并按组间等概率抽样n行

无法在盐流道中获得柱子

了解如何让库认识到我具有所需的依赖项

如何将参数名作为参数传入到函数中?