我有一个包含三个字母长的所有键的字典:threeLetterDict={'abc': 'foo', 'def': 'bar', 'ghi': 'ha' ...}
现在我需要将句子abcdefghi
翻译成foobarha
。我正在使用re.sub
尝试下面的方法,但不知道如何将字典放入其中:
p = re.compile('.{3}') # match every three letters
re.sub(p,'how to put dictionary here?', "abcdefghi")
谢谢! (无需检查输入长度是否为三的倍数)
答案 0 :(得分:3)
答案 1 :(得分:3)
完全避免re
的解决方案:
threeLetterDict={'abc': 'foo', 'def': 'bar', 'ghi': 'ha'}
threes = map("".join, zip(*[iter('abcdefghi')]*3))
"".join(threeLetterDict[three] for three in threes)
#>>> 'foobarha'
答案 2 :(得分:2)
您可能不需要在这里使用sub:
>>> p = re.compile('.{3}')
>>> ''.join([threeLetterDict.get(i, i) for i in p.findall('abcdefghi')])
'foobarha'
只是另一种解决方案:)。