導航:首頁 > 編程語言 > pythonu

pythonu

發布時間:2022-01-14 09:18:18

python中u'string'和unicode('string')有什麼區別

首先要弄清楚的是,在python里,string object和unicode object是兩種不同的類型。

string object是由characters組成的sequence,而unicode object是Unicode code units組成的sequence。

string里的character是有多種編碼方式的,比如單位元組的ASCII,雙位元組的GB2312等等,再比如UTF-8。很明顯要想解讀string,必需知道string里的character是用哪種編碼方式,然後才能進行。

Unicode code unit又是什麼東西呢?一個Unicode code unit是一個16-bit或者32-bit的數值,每個數值代表一個unicode符號。在python里,16-bit的unicode,對應的是ucs2編碼。32-bit對應的是ucs4編碼。是不是感覺string里character的編碼沒什麼區別?反正我現在腦子里就是這樣一個印象:在Python里,ucs2或者ucs4編碼的,我們叫做unicode object,其他編碼的我們就叫做string。

至於python里的unicode到底是ucs2還是ucs4的,可以在編譯時指定。例如Linux下,要用ucs2做unicode的編碼,可以這樣
# ./configure --enable-unicode=ucs2
# make
# make install
下載的Windows預編譯版本,一般都是ucs2的。要想知道某個python運行環境是ucs2還是ucs4,可以查看sys.maxunicde,65535就是ucs2的,另一個很大的數值就是ucs4。

下面我們看看string和unicode在python里的不同
我們先看看在簡體中文Windows 2003系統下,系統編碼是GBK
>>> a = '你好'
>>> a
'/xc4/xe3/xba/xc3'
>>> b = u'你好'
>>> b
u'/u4f60/u597d'
>>> print a
你好
>>> print b
你好
>>> a.__class__

>>> b.__class__

>>> len(a)
4
>>> len(b)
2

在一個系統編碼為UTF-8的Linux環境下
>>> a = '你好'
>>> a
'/xe4/xbd/xa0/xe5/xa5/xbd'
>>> b = u'你好'
>>> b
u'/u4f60/u597d'
>>> print a
你好
>>> print b
你好
>>> a.__class__

>>> b.__class__

>>> len(a)
6
>>> len(b)
2

如何?簡單總結一下:
1、string直接用引號來表示,unicode在引號前加一個u
2、直接輸入的string常量會用系統預設編碼方式來編碼,例如在GBK環境下,'你好'會編碼成'/xc4/xe3/xba/xc3',而在UTF-8環境下就成了'/xe4/xbd/xa0/xe5/xa5/xbd'。
3、len(string)返回string的位元組數,len(unicode)返回的是字元數
4、很重要的一點,print unicode不會亂碼。現在我們常用的Linux、Windows系統,都是支持unicode的,版本太老的不算。比如Windows 2003支持ucs2,所以在中文Windows2003下,除了可以正常顯示預設的GBK編碼外,還可以正常顯示ucs2編碼。舉個例子,還是在中文Windows 2003的GBK環境下:
>>>a = '/xe4/xbd/xa0/xe5/xa5/xbd' # UTF-8的'你好'
>>> print a
浣犲ソ
>>> b = unicode(a, "UTF-8")
>>> b
u'/u4f60/u597d'
>>> print b
你好

應該明白了吧?

下面再說說string和unicode的相互轉換,什麼unicode()、decode()、encode()、codecs之類的。

❷ python 中文字元串前為什麼加u

u不是針對中文, 可以針對任何的字元串
它代表是對字元串進行unicode編碼.
一般英文字元在使用各種編碼下, 基本都可以正常解析, 所以一般也就不帶u了
但是中文, 必須表明所需編碼, 否則一旦編碼轉換就會出現亂碼.

建議所有編碼方式採用utf8

❸ python里tuple類型中u是什麼東西

Python的元組與列表類似,不同之處在於元組的元素不能修改;元組使用小括弧(),列表使用方括弧[];元組創建很簡單,只需要在括弧中添加元素,並使用逗號(,)隔開即可,例如:

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

創建空元組,例如:tup = ();

元組中只有一個元素時,需要在元素後面添加逗號,例如:tup1 = (50,);

元組與字元串類似,下標索引從0開始,可以進行截取,組合等。

❹ python字元串前綴 u和r的區別

以r或R開頭的python中的字元串表示(非轉義的)原始字元串

python裡面的字元,如果開頭處有個r,比如:

(r』^time/plus/d{1,2}/$』, hours_ahead)

說明字元串r"XXX"中的XXX是普通字元。有普通字元相比,其他相對特殊的字元,其中可能包含轉義字元,即那些,反斜杠加上對應字母,表示對應的特殊含義的,比如最常見的」 "表示換行," "表示Tab等。

而如果是以r開頭,那麼說明後面的字元,都是普通的字元了,即如果是「 」那麼表示一個反斜杠字元,一個字母n,而不是表示換行了。以r開頭的字元,常用於正則表達式,對應著re模塊。

以u或U開頭的字元串表示unicode字元串

Unicode是書寫國際文本的標准方法。如果你想要用非英語寫文本,那麼你需要有一個支持Unicode的編輯器。類似地,Python允許你處理Unicode文本——你只需要在字元串前加上前綴u或U。

❺ python中的u和unicode編碼問題!!!!

#-*-coding:gbk-*-
importsys
reload(sys)
printsys.getdefaultencoding()

printu'中文'
printunicode('中文','gbk')

你運行下這個程序,就能看出來,python2默認是ascii,雖然你文件使用的gbk,但是不會影響默認編碼。


print u'中文',這個是直接定義一個unicode字元串。

unicode('中文')這個是生成unicode對象,解釋器會對內容使用默認編碼進行解碼,轉換成unicode,默認的是ascii,所以報錯,你指定gbk就可以了。


如果解決了您的問題請採納!
如果未解決請繼續追問

❻ python 轉義符號\u

\u才是轉義符,而你例中的\\u本身已經取消了轉義。"\\u1234"代表「\、u、1、2、3、4」共6個字元。

❼ python u""是什麼意思'

unicode碼

❽ python中文字元串前為什麼加u

python中文字元串前為什麼加u?因為u可以針對任何字元串。u不只連接漢語, 可以連接所有的字元串。它表示可以對字元串進行unicode編碼.常理來說英文字元在使用各種編碼下, 一般都可以正常解析, 所以一般也就不帶u了。

❾ python這段代碼中u什麼意思

以u或U開頭的字元串表示unicode字元串,
print時,就相當於print "游戲結果\n成績列表",字元串中,轉義字元會進行轉義。
輸出結果就是:
游戲結果
成績列表

別外一種用法,如果想直接輸出"游戲結果\n成績列表",就寫成:
aa=(r"游戲結果\n成績列表")
print(aa)

這樣,\n就不會進行轉義,方便輸出處理反斜杠,
這樣輸出結果就是:
游戲結果\n成績列表

閱讀全文

與pythonu相關的資料

熱點內容
株洲歪鬍子游戲源碼 瀏覽:135
朔源碼燕窩會假嗎 瀏覽:279
php是否支持gd 瀏覽:925
旅遊查攻略下載什麼app 瀏覽:774
ps存儲不在原始文件夾 瀏覽:37
android直播開發CSDN 瀏覽:750
apacheaddtypephp 瀏覽:501
女程序員美劇 瀏覽:639
安卓怎麼隱身登錄王者榮耀 瀏覽:854
通達信前五源碼編寫 瀏覽:19
gcc怎麼編譯qt程序 瀏覽:925
華為文件夾命名大全 瀏覽:383
php無限分類循環 瀏覽:41
北漂程序員營養餐 瀏覽:105
掃描件pdf轉換成圖片 瀏覽:58
忍者必須死伺服器升級到什麼時候 瀏覽:339
鹼基最多配對演算法 瀏覽:829
命令和決定表彰上的區別 瀏覽:152
全國醫保服務平台app叫什麼 瀏覽:319
php輸出表單 瀏覽:237