淺談python中str字符串和unicode對象字符串的拼接問題

今天小編就爲大家分享一篇淺談python中str字符串和unicode對象字符串的拼接問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

str字符串

s = '中文'  # s: <type 'str'>

s是個str對象,中文字符串。存儲方式是字節碼。字節碼是怎麼存的:

如果這行代碼在python解釋器中輸入&運行,那麼s的格式就是解釋器的編碼格式;

如果這行代碼是在源碼文件中寫入、保存然後執行,那麼解釋器載入代碼時就將s初始化爲文件指定編碼(比如py文件開頭那行的utf-8);

unicode對象字符串

unicode是一種編碼標準,具體的實現可能是utf-8,utf-16,gbk等等,這就是中文字符串和unicode有密切關係的原因。

python內部使用兩個字節存儲一個unicode對象(unicode對象並不只能是字符串,這兩個字節還可以存其他內容),爲什麼要用unicode而不用str呢,因爲中文轉碼的緣故,因爲unicode的優點是便於跨平臺。

s1 = u'中文'     # s1: <type 'unicode'>
s2 = unicode('中文', 'utf-8') # utf8是在指定解碼方式, s2: <type 'unicode'>

str字符串和unicode字符串拼接

只要注意正確的decode、encode方式,統一編碼後就能順利地拼接了。

# -*- coding: utf-8 -*-
 
s1 = '中文'
s2 = u'你好'
print s1 + unicode(s2, 'utf-8') # 中文你好
print s1 + s2.decode('utf-8')  # 中文你好
print s1.encode('utf-8') + s2  # 中文你好
 
print type(s1)     # <type 'str'>
print type(s2)     # <type 'unicode'>
print type(s1.decode('utf-8')) # <type 'unicode'>
print type(s2.encode('utf-8')) # <type 'str'>

對於str要注意當前環境編碼方式,也許是控制檯那種設定好了的,也許是你自己在代碼中指定的。(看你的代碼是在哪裏敲的了)

對於unicode對象,一般都是decode得到的,像直接【u'你好'】這種其實不是很常見,所以要注意字符串來源是什麼編碼,比如從gbk文件或utf8文件中讀入的。

以上這篇淺談python中str字符串和unicode對象字符串的拼接問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持神馬文庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章