python
字串前加字元r
是告訴直譯器該字元是原始字元、不要轉義;原始字串:所有的字串都是直接按照字面的意思來使用,沒有轉義特殊或不能列印的字元。 原始字串除在字串的第乙個引號前加上字母"r"(可以大小寫)以外,與普通字串有著幾乎完全相同的語法。
python
字串前加字元u
是告訴直譯器該字元是按照unicode
編碼,防止源**中的中文導致**異常;因為python內部預設編碼方式為unicode
編碼,外部編碼方式預設為ascii
編碼,我們在**中使用中文時需要告訴直譯器其編碼方式,常用的就是在**檔案的最前端新增如下:
# -*- coding: utf-8 -*-
這就是告知python我這個檔案裡的文字是用utf-8編碼的,這樣,python就會依照utf-8的編碼形式解讀其中的字元,然後轉換成unicode編碼內部處理使用。
不過這種方式處理會存在異常,當系統編碼方式不是utf-8
時,螢幕列印就會異常,解決辦法可以將上面的頭改為系統的編碼方式;也可以保持原始碼檔案的utf-8不變,而是在』哈』前面加個u字,也就是:
s1=u』哈』
print s1
這樣就可以正確列印出』哈』字了。
這裡的這個u表示將後面跟的字串以unicode
格式儲存。python
會根據**第一行標稱的utf-8
編碼識別**中的漢字』哈』,然後轉換成unicode
物件。如果我們用type
檢視一下』哈』的資料型別type(『哈』)
,會得到,而
type(u』哈』)
,則會得到,也就是在字元前面加u就表明這是乙個unicode物件,這個字會以unicode格式存在於記憶體中,而如果不加
u
,表明這僅僅是乙個使用某種編碼的字串,編碼格式取決於python
對原始碼檔案編碼的識別,這裡就是utf-8
。
python在向控制台輸出unicode物件的時候會自動根據輸出環境的編碼進行轉換,但如果輸出的不是unicode物件
而是普通字串,則會直接按照字串的編碼輸出字串,從而出現上面的現象。
使用unicode物件的話,除了這樣使用u標記,還可以使用unicode類以及字串的encode和decode方法。
unicode類的建構函式接受乙個字串引數和乙個編碼引數,將字串封裝為乙個unicode,比如在這裡,由於我們用的是utf-8編碼,所以unicode中的編碼引數使用』utf-8′將字元封裝為unicode物件,然後正確輸出到控制台:
s1=unicode(『哈』, 『utf-8′)
print s1
關於python的其他字串運算子,請檢視python字串運算子 簡單了解python字串前面加r,u的含義
u u 表示unicodenxppuig字串 不是僅僅是針對中文,可以針對任何的字串,代表是對字串進行unicode編碼。一般英文本元在使用各種編碼下,基本都可以正常解析,所以一般不帶u 但是中文,必須表明所需編碼,否則一旦編碼轉換就會出現亂碼。建議所有編碼方式採用utf 8,即在py檔案開頭新增 ...
python 字串前加 b u r 含義
常見的形式有以下三種 u u unicode編碼 適用於中文。英文本元無需編碼,正常可以解析。但是中文,必須標明編碼,否則編碼轉換就會出現亂碼。r r 非轉義的原始字串 比如最常見的 n 表示換行。而在這些轉義字元前加r,那麼說明後面的字元,都是普通的字元了,即如果是 n 那麼表示乙個反斜槓字元,乙...
python字串前加「u r b f」的作用
1.1示例 str demo u hello,中國!1.2 作用解釋 字串前加上u進行標記意識就是該字串會以 unicode 格式 進行編碼,一般用在字串中有中文字元的時候才會加,原因只要防止因字串原始碼儲存格式問題,導致再次使用時出現中文亂碼。2.1示例str demo r d p a z a z...