用他们的unicode字符替换字符串中的数字的pythonic方法

时间:2014-04-08 13:31:28

标签: python string unicode

我正在寻找一个python代码,它将采用非unicode字符串,例如"ab <U0054><U0064>",并将其替换为其等效的unicode,即:u"ab \u0054\u0064"u"ab Td"

是否有更多的pythonic方式来编写它,而不是这个?

def replace_unicode(s):
    while True:
        i = s.find('<U')
        if i == -1:
            break
        s = s.replace(s[i:i+7], unichr(int(s[i+2:i+6], 16)))
    return s

1 个答案:

答案 0 :(得分:4)

这个避免了无限循环+中断,而是使用re.sub

def replace_unicode(s):
    # helper function which returns the unicode char for a re match object
    def unirepl(m):
        return unichr(int(m.group(1), 16))

    return re.sub(r"<U([0-9a-fA-F]{4})>", unirepl, s)