如何在Python中将字符的ASCII值作为int进行计算?Python中字符的ASCII值
729
A
回答
950
38
您正在寻找:
ord()
134
请注意,ord()本身不给你ASCII值;它会为您提供字符的数字值,因为它使用的是任何编码。因此,如果您使用Latin-1,则ord('ä')的结果可能为228,或者如果您使用UTF- 8。它甚至可以返回的Unicode码点,而不是如果你传递一个Unicode:
>>> ord(u'あ')
12354
12
接受的答案是正确的,但有一个更聪明的/有效的方法,如果你需要一大堆ASCII的转换要做到这一点字符一次写入他们的ASCII码。而不是做:
for ch in mystr:
code = ord(ch)
或稍快:
你转换成直接迭代代码的Python原生类型。在Python 3中,这是微不足道的:
for code in mystr.encode('ascii'):
和Python的2.6/2.7,因为它没有一个PY3风格bytes
对象时,它只是稍微有点复杂(bytes
是str
一个别名,它通过文字迭代) ,但他们确实有bytearray
:
# If mystr is definitely str, not unicode
for code in bytearray(mystr):
# If mystr could be either str or unicode
for code in bytearray(mystr, 'ascii'):
编码为通过序遍历本地意味着转换一个类型去得更快;在Py2.7和Py3.5上的本地测试中,重复使用str
以获得其ASCII码使用map(ord, mystr)
开始需要的时间约为Py3上的bytearray(mystr)
或Py3上的mystr.encode('ascii')
上的,并且当str
获得时更长的时候,支付给map(ord, mystr)
的乘数上涨至〜6.5x-7x。
唯一的缺点是,转换是一下子,让你的第一个结果可能需要较长的时间,而一个真正的巨大str
将有一个比例较大的临时bytes
/bytearray
,但除非这迫使你进入页抖动,这可能不重要。
相关问题
- 1. Ruby中字符的ASCII值
- 2. Python非ASCII字符
- 3. 将字符串转换为ASCII值python
- 4. 非ASCII字符的Python - re.sub
- 5. Python:将列表中的字符串值更改为ascii值
- 6. 显示字符的Ascii值
- 7. 排除python中的非ASCII字符
- 8. CHR在Python中的非ASCII字符
- 9. C++字符的ASCII值到字符串
- 10. Python获取ASCII字符
- 11. Python - 压缩ASCII字符串
- 12. 非ASCII字符错误python
- 13. 如何将ascii值列表转换为python中的字符串?
- 14. 编辑bash中字符的ASCII值
- 15. Python - 替换字符串中的非ASCII字符(»)
- 16. 如何在python中打印没有ASCII字符的字符串?
- 17. Python 2.7字符串中的非ASCII字符
- 18. 用Python中的unicode字符串替换非ASCII字符
- 19. 在python字符串中插入负的ASCII字符
- 20. 如何将ASCII字符转换为Python中的字符串
- 21. 删除无效的ascii字符的Python
- 22. 如何用python中的非ascii字符替换字符串中的字符?
- 23. Python中的ASCII字典
- 24. Python将ASCII字符转换为字节
- 25. Python的非ASCII字符“\ XE2”文件
- 26. 如何查找字符串中字符的ascii值?
- 27. 反转包含ASCII字符和非ASCII字符的字符串
- 28. Python:在字符串列表中替换非ascii字符
- 29. Python:将列表中的字符串值更改为ascii值使用追加
- 30. C中的ASCII字符
哪个编码在chr中使用? – njzk2 2011-12-14 08:59:31
@ njzk2:`latin1`(如果你的原始字节是用cp1251编码的(例如cp1251)(西里尔语) – 2012-04-17 04:57:56