我正在尝试将一些中文、俄文或各种非英文字符集写到一个平面文件中,以便进行测试。我遇到了如何将Unicode十六进制或十进制值输出到相应字符的问题。
例如,在Python语言中,如果你有一个像абвгдежзийкл这样的硬编码字符集,你可以分配value = u"абвгдежзийкл",这是没有问题的。
但是,如果您在一个变量中存储了一个十进制或十六进制,比如1081 / 0439,并且您想打印出它对应的实际字符(而不仅仅是输出0x439),那么该怎么做呢?上面的Unicode十进制/十六进制值引用了й。
发布于 2012-05-23 15:53:41
发布于 2017-03-17 00:46:57
所以这个问题的答案是:
使用int(hex_value, 16)
chr().获取相应的字符串
总结一下:
>>> print(chr(int('0x897F', 16)))
西发布于 2020-12-08 04:32:29
在处理一个包含解析一些JSON的项目时,我遇到了一个类似的问题。我有很多字符串,所有非ASCII字符都像这样转义:
>>> print(content)
\u0412\u044B j\u0435\u0441\u0442\u0435 \u0438\u0437 \u0420\u043E\u0441\u0441\u0438\u0438?
...
>>> print(content)
\u010Cemu jesi na\u010Dinal izu\u010Dati med\u017Euslovjansky jezyk?使用unichr()逐个符号地转换这样的混合将是乏味的。我最终决定的解决方案是:
content.encode("utf8").decode("unicode-escape")第一个操作(编码)产生如下的字节串:
b'\\u0412\\u044B j\\u0435\\u0441\\u0442\\u0435 \\u0438\\u0437 \\u0420\\u043E\\u0441\\u0441\\u0438\\u0438?'
b'\\u010Cemu jesi na\\u010Dinal izu\\u010Dati med\\u017Euslovjansky jezyk?'第二个操作(解码)将字节字符串转换为Unicode字符串,但用\替换了\\,这将对字符进行“解包”,结果如下:
Вы jесте из России?
Čemu jesi načinal izučati medžuslovjansky jezyk?https://stackoverflow.com/questions/10715669
复制相似问题