首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中,chr(ord(c))何时不等于c?

在Python中,chr(ord(c))何时不等于c?
EN

Stack Overflow用户
提问于 2016-05-04 08:43:23
回答 1查看 977关注 0票数 5

我正在阅读Ansible模块中的testinfra源代码。我找到了以下几行代码:

代码语言:javascript
复制
    # Ansible return an unicode object but this is bytes ...
    # A simple test case is:
    # >>> assert File("/bin/true").content == open("/bin/true").read()
    stdout_bytes = b"".join((chr(ord(c)) for c in out['stdout']))
    stderr_bytes = b"".join((chr(ord(c)) for c in out['stderr']))

它遍历stdout,获取每个字符的整数序号,并将其转换回一个单字符字符串。但是有什么意义呢?

EN

回答 1

Stack Overflow用户

发布于 2016-05-04 09:08:59

c是特定于unicode的字符时(不能以ASCII编码):

代码语言:javascript
复制
>>> ord(u'\u2020')
8224
>>> chr(ord(u'\u2020'))
ValueError: chr() arg not in range(256)

这只在Python2中是正确的,就像在Python3中一样,unichr被删除,而chr充当unichr。对于这样的库,这似乎是不寻常的行为,因为它通常会抛出一个意外的错误,该错误是特定于任何非英语语言环境的可执行文件的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37016635

复制
相关文章

相似问题

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