如果我运行这段代码:
s.translate(str.maketrans({'as': 'dfg', '1234': 'qw'}))
我会得到:
ValueError: string keys in translate table must be of length 1
有没有办法使用一次替换多个字符str.translate
?文档说我可以使用codecs
寻求灵活的方法,但我不知道如何做。
如果不是,那么可以做什么呢?
No. str.translate
可以使用solely替换单个字符。
替换字符串可以是任意长度,但是keys必须是单个字符。
当他们的文档提到codecs
他们说你可以实现自定义编码,注册它,然后使用它打开文件......这不是调用类似的东西codecs.maketrans
,这是一项相当大的工作。我个人会使用re.sub
通过函数替换:
replacements = {'as': 'dfg', '1234': 'qw'}
re.sub('({})'.format('|'.join(map(re.escape, replacements.keys()))), lambda m: replacements[m.group()], text)
这似乎做你想做的:
>>> re.sub('({})'.format('|'.join(map(re.escape, replacements.keys()))), lambda m: replacements[m.group()], "test as other test1234")
'test dfg other testqw'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)