[英]Weird behaviour when trying to print characters of a byte string
為什么這個短代碼的行為與 run 和 other 不同?
# -*- coding: utf-8 -*-
for c in 'aɣyul':
print c
我在每次運行中的輸出是:
# nothing
---
a
---
l
---
u
l
---
a
y
u
l
...etc
我知道如何解決這個問題,問題只是為什么 Python 在每次運行時打印字符串的不同部分,而不是同一部分?
您需要在字符串的開頭添加一個u
,這使得 python 將您的字符串作為 unicode 進行處理,並在打印時解碼您的字符:
>>> for c in u'aɣyul':
... print c
...
a
ɣ
y
u
l
請注意,如果沒有編碼,python 會將 unicode 字符分解為兩個單獨的十六進制值,並且在每次打印中,您將獲得此十六進制值的字符串表示形式:
>>> 'aɣyul'
'a\xc9\xa3yul'
^ ^
如果您想知道為什么 python 將 unicode 分解為 2 十六進制值,因為str
實例包含原始 8 位值,而 unicode 字符使用超過 8 位內存。
您還可以手動解碼十六進制值:
>>> print '\xc9\xa3'.decode('utf8')
ɣ
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.