我将以lloll为例.

这是我的代码:

mapping = {'ll':'o','o':'ll'}
string = 'lloll'
out = ' '.join(mapping.get(s,s) for s in string.split())
print(out)

输出应该是ollo,但我得到lloll.当我写ll o ll时,它是有效的,但我不希望llo之间有空格,我也不想做mapping = {'lloll':'ollo'}之类的事情.

推荐答案

不确定这是否能解释所有的边缘情况(重叠匹配呢?),但我目前的 idea 是通过映射的键将字符串设置为re.split,然后应用映射.

import re
mapping = {'ll':'o','o':'ll'}
string = 'lloll'
choices = f'({"|".join(mapping)})'
result = ''.join(mapping.get(s, s) for s in re.split(choices, string))

Python相关问答推荐

提高算法效率的策略?

仅使用预先计算的排序获取排序元素

获取git修订版中每个文件的最后修改时间的最有效方法是什么?

以极轴表示的行数表达式?

为什么我的scipy.optimize.minimize(method=";newton-cg";)函数停留在局部最大值上?

从列表中分离数据的最佳方式

在任何要保留的字段中添加引号的文件,就像在Pandas 中一样

根据过滤后的牛郎星图表中的数据计算新系列

具有不匹配列的2D到3D广播

VSCode Pylance假阳性(?)对ImportError的react

在FastAPI/Starlette中使用WebSockets时如何运行后台任务?

在每个子列表(2D列表)中返回2个以上的重复项

我想把字转换成8位二进制,但某些字符是7位的

递归函数根据词法作用域的不同而失败

BeautifulSoup:迭代元素列表并按类提取文本

Polars:避免聚合中不允许窗口表达式的智能方法"

支持向量机模型突出错误的数据点作为支持向量

有没有一种将数据从MariaDB导入到Python中的非内存密集型方法?

确定pymongo文档的数量

棋类游戏的极大极小函数