我正在寻找一个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
答案 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)