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))