<p>我需要用两个字母等价物(<em>Ae</em>,<em>ä</em>,<em></em>,<em>厄厄厄厄姆>,<em>厄厄厄厄姆>,<em>厄姆</em>,<em>ü</em>,<em>ß</em>)的两个字母等价物(<em>Ae</em>,<em>Ae</em>,<em>Oe</em>,<em>Oe</em>,<em>Oe</em>,<em>Oe</em>,<em>Ue</em>,<em>Ue</em>,<em>Ue</em>,<em>ss</em>,<em</em>,<em)。在</p>
<p>目前,我有这个函数,但是字符串的长度改变了:</p>
<pre><code>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)
</code></pre>
<p>但是,我要求字符串的总长度不能改变。例如,<em>Mär</em>应该变成<em>Mae</em>。在</p>
<p>在获得适当的解决方案(regex)方面有什么帮助吗非常感谢:)</p>