ドイツ語のウムラウト ( Ä、ä、Ö、ö、Ü、ü、ß ) を 2 文字の対応する文字 ( 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になります。
適切な解決策(正規表現?)を導き出すための助けは大歓迎です:)