如何在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