簡體   English   中英

嘗試打印字節字符串的字符時的奇怪行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM