我将以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
时,它是有效的,但我不希望ll
和o
之间有空格,我也不想做mapping = {'lloll':'ollo'}
之类的事情.
我将以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
时,它是有效的,但我不希望ll
和o
之间有空格,我也不想做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))