簡體   English   中英

如何從字符串變量中打印 unicode 個字符?

[英]How to print unicode character from a string variable?

我是編程界的新手,我有點困惑。

我希望這兩個打印結果相同的圖形 unicode 感嘆號符號:

我的實驗:

number   = 10071
byteStr  = number.to_bytes(4, byteorder='big')
hexStr   = hex(number)
uniChar  = byteStr.decode('utf-32be')
uniStr   = '\\u' + hexStr[2:6]
print(f'{number} - {hexStr[2:6]} - {byteStr} - {uniChar}')

print(f'{uniStr}')   # Not working
print(f'\u2757')     # Working

Output:

10071 - 2757 - b"\x00\x00'W" - ❗
\u2757
❗

最后兩行有什么區別? 請幫助我理解它!

我的環境是JupyterHub和v3.9 python。

Python 解析器在構造文字字符串時評估的轉義碼。 例如,文字字符串'馬''馬'被解析器評估為相同的、長度為 1 的字符串。

您可以(並且確實)通過使用反斜杠 ( \\ ) 的轉義碼來構建一個包含 6 個字符的字符串,以防止解析器將這 6 個字符評估為轉義碼,這就是它打印為 6 個字符的原因 .

如果您使用這 6 個字符構建字節字符串,則可以使用.decode('unicode-escape')對其進行解碼以獲取字符:

>>> b'\\u2757'.decode('unicode_escape')
'❗'

但是對數字本身使用chr() function 更容易:

>>> chr(0x2757)
'❗'
>>> chr(10071)
'❗'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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