如何用两个其他字符替换一个元音变音符和以下字符

2024-10-04 07:33:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用两个字母等价物(Aeä厄厄厄厄姆>,厄厄厄厄姆>,厄姆üß)的两个字母等价物(AeAeOeOeOeOeUeUeUess

目前,我有这个函数,但是字符串的长度改变了:

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。在

在获得适当的解决方案(regex)方面有什么帮助吗非常感谢:)


Tags: 函数字符串transstringdef字母sstranslate
2条回答

只需截短为原始字符串长度:

return patt.sub(lambda x: trans[x.group()], s)[:len(s)]

... the string's total length should not change.

好吧,这是个奇怪的要求,但是

patt = re.compile("([" + "".join(trans.keys()) + "]).")

注意,如果元音变音是字符串中的最后一个字符,则不会替换它。显然,这会改变字符串的长度。在

相关问题 更多 >