python 使用字典替换多个双字符
python replace multiple double characters using a dictionary
我希望使用 python 中的字典替换字符串中的字符对。
它适用于单个字符,但不适用于双字符。
txt = "1122"
def processString6(txt):
dictionary = {'11': 'a', '22':'b'}
transTable = txt.maketrans(dictionary)
txt = txt.translate(transTable)
print(txt)
processString6(txt)
错误信息:
ValueError: string keys in translate table must be of length 1
期望的输出:
ab
我也试过了
s = ' 11 22 '
d = {' 11 ':'a', ' 22 ':'b'}
print( ''.join(d[c] if c in d else c for c in s))
但同样不行
希望使用字典而不是 .replace()
我只想扫描一次字符串
因为 .replace() 对每个键进行扫描,值
您可以使用这段代码来替换任意长度的字符串:
import re
txt = "1122"
def processString6(txt):
dictionary = {'11': 'a', '22':'b'}
pattern = re.compile(
'|'.join(sorted(dictionary.keys(), key=len, reverse=True)))
result = pattern.sub(lambda x: dictionary[x.group()], txt)
return result
print(processString6(txt))
我希望使用 python 中的字典替换字符串中的字符对。
它适用于单个字符,但不适用于双字符。
txt = "1122"
def processString6(txt):
dictionary = {'11': 'a', '22':'b'}
transTable = txt.maketrans(dictionary)
txt = txt.translate(transTable)
print(txt)
processString6(txt)
错误信息:
ValueError: string keys in translate table must be of length 1
期望的输出:
ab
我也试过了
s = ' 11 22 '
d = {' 11 ':'a', ' 22 ':'b'}
print( ''.join(d[c] if c in d else c for c in s))
但同样不行
希望使用字典而不是 .replace()
我只想扫描一次字符串
因为 .replace() 对每个键进行扫描,值
您可以使用这段代码来替换任意长度的字符串:
import re
txt = "1122"
def processString6(txt):
dictionary = {'11': 'a', '22':'b'}
pattern = re.compile(
'|'.join(sorted(dictionary.keys(), key=len, reverse=True)))
result = pattern.sub(lambda x: dictionary[x.group()], txt)
return result
print(processString6(txt))