我试图使用python字符串的encode方法返回字符的unicode转义代码,如下所示:
>>> print( 'ф'.encode('unicode_escape').decode('utf8') )
\u0444这对于非ascii字符很好,但是对于ascii字符,它只返回ascii字符本身:
>>> print( 'f'.encode('unicode_escape').decode('utf8') )
f所需的输出将是\u0066。这个剧本是为了教学目的。
如何获得所有字符的unicode十六进制代码?
发布于 2017-02-06 21:28:03
可以使用ord,根本不需要编码/解码:
>>> '"\\U{:08x}"'.format(ord('f')) # ...or \u{:04x} if you prefer
'"\\U00000066"'
>>> eval(_)
'f'发布于 2017-02-06 21:54:06
您必须手动这样做;如果假设所有输入都在Unicode BMP中,那么简单的正则表达式可能是最快的;这将用它们的\uhhhh转义替换每个字符:
import re
def unicode_escaped(s, _pattern=re.compile(r'[\x00-\uffff]')):
return _pattern.sub(lambda m: '\\u{:04x}'.format(
ord(m.group(0))), s)我已经明确地将模式限制在BMP上,以便优雅地处理非BMP点。
演示:
>>> print(unicode_escaped('foo bar ф'))
\u0066\u006f\u006f\u0020\u0062\u0061\u0072\u0020\u0444https://stackoverflow.com/questions/42077422
复制相似问题