我需要将德语变音符号(Ä、ä、Ö、ö、Ü、ü、ß)替换为它们的两个字母等效项(Ae、ae、Oe、oe、Ue、ue、ss)。
目前,我有这个功能,但字符串的长度发生了变化:
def _translate_umlauts(s):
"""Translate a string into ASCII.
This Umlaut translation comes from http://stackoverflow.com/a/2400577/152439
"""
trans = {"\xe4" : "ae"} # and more ...
patt = re.compile("|".join(trans.keys()))
return patt.sub(lambda x: trans[x.group()], s)
但是,我要求字符串的总长度不应该改变。例如,Mär应该变成Mae。
非常感谢您在推导适当的解决方案(正则表达式?)方面的任何帮助:)