首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python unicode码点到unicode字符

Python unicode码点到unicode字符
EN

Stack Overflow用户
提问于 2012-05-23 15:52:09
回答 4查看 13.3K关注 0票数 21

我正在尝试将一些中文、俄文或各种非英文字符集写到一个平面文件中,以便进行测试。我遇到了如何将Unicode十六进制或十进制值输出到相应字符的问题。

例如,在Python语言中,如果你有一个像абвгдежзийкл这样的硬编码字符集,你可以分配value = u"абвгдежзийкл",这是没有问题的。

但是,如果您在一个变量中存储了一个十进制或十六进制,比如1081 / 0439,并且您想打印出它对应的实际字符(而不仅仅是输出0x439),那么该怎么做呢?上面的Unicode十进制/十六进制值引用了й

EN

回答 4

Stack Overflow用户

发布于 2012-05-23 15:53:41

Python 2:使用unichr()

代码语言:javascript
复制
>>> print(unichr(1081))
й

Python 3:使用chr()

代码语言:javascript
复制
>>> print(chr(1081))
й
票数 33
EN

Stack Overflow用户

发布于 2017-03-17 00:46:57

所以这个问题的答案是:

使用int(hex_value, 16)

  • then将十六进制值转换为十进制,使用chr().

获取相应的字符串

总结一下:

代码语言:javascript
复制
>>> print(chr(int('0x897F', 16)))
西
票数 7
EN

Stack Overflow用户

发布于 2020-12-08 04:32:29

在处理一个包含解析一些JSON的项目时,我遇到了一个类似的问题。我有很多字符串,所有非ASCII字符都像这样转义:

代码语言:javascript
复制
>>> 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()逐个符号地转换这样的混合将是乏味的。我最终决定的解决方案是:

代码语言:javascript
复制
content.encode("utf8").decode("unicode-escape")

第一个操作(编码)产生如下的字节串:

代码语言:javascript
复制
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字符串,但用\替换了\\,这将对字符进行“解包”,结果如下:

代码语言:javascript
复制
Вы jесте из России?
Čemu jesi načinal izučati medžuslovjansky jezyk?
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10715669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档