可以認為一個是用的是str方法,目的是向終端顯示;一個用的repr方法,目的是把數據結構和類型表達出來

成都創新互聯公司企業建站,十年網站建設經驗,專注于網站建設技術,精于網頁設計,有多年建站和網站代運營經驗,設計師為客戶打造網絡企業風格,提供周到的建站售前咨詢和貼心的售后服務。對于成都網站設計、成都網站建設中不同領域進行深入了解和探索,創新互聯在網站建設中充分了解客戶行業的需求,以靈動的思維在網頁中充分展現,通過對客戶行業精準市場調研,為客戶提供的解決方案。
這是 Python 2 特別討厭的一點,以至于我實在忍受不了寫了個?repl_py27?來繞過該問題。不過最終還是遷移到 Python 3 啦 =w=
Python 2 的世界是個 ASCII 的世界,unicode 是后來加的,所以使用?repr?顯示的時候是把所有非 ASCII 的字符轉義顯示的。你要直接把字符串寫出來的話,Python 2 就不會進行任何轉義了,于是在支持的終端上,中文就能正常顯示了。
print 遇到非字符串時,會調用?str()?函數將對象轉成字符串再輸出:
class?T(object):
...???def?__repr__(self):
...?????return?'repr'
...???def?__str__(self):
...?????return?'str'
...?
print?T()
str
而很多對象的?__str__?方法是沒有定義的,于是?str()?函數改調用它的?__repr__?方法。
又:Python 2 的字符串和 unicode 的?str()?輸出都是經過轉義的。這也是我討厭 Python 2 的另一個重要原因:
u'中文'
u'\u4e2d\u6587'
'中文'???????????????????????????????????????????????????
'\xe4\xb8\xad\xe6\x96\x87'
python os 路徑被轉義的問題,以前常碰到字符串前面加r的情況,不加r有時候有問題有時候沒有,也就沒深究,這次就碰到一個問題搞了半天發現就是這里路徑被轉義了。
文件路徑中的單雙正反斜杠/ \ // \的意義
在python中反斜杠 \ 的功能是轉義,例如:\n表示換行,\t 表示水平制表符,也就是tab鍵。在windows中 反斜杠 \ 也用來表示路徑分隔符。
例:
這里\n表示換行,所以輸出到K:\imageData就換行了,\4表示輸出兩個空格,\0 表示八進制編碼的ASCII,\0后面的兩位數就是8進制數表示的ASCII值,\0后面的8進制數44表示為十進制是4*8+4=36,在ASCII表中正好對應$符號。
如果是在os.path.join()中生成的路徑,沒法顯示的用手改,可以配合split() 和 str.join()方法解決
split("\")把所有有 \ 的地方斷開,返回一個列表
rsplit("\",1)把最后出現"\"的地方斷開返回一個列表
rsplit()取負數時退化為split()方法
import urllib
rawurl=xxx
url=urllib.unquote(rawurl)
所用模塊:urllib
所用函數:urllib.unquote()
案例
import urllib
rawurl = "%E6%B2%B3%E6%BA%90"url = urllib.unquote(rawurl)print url
輸出
河源
問題擴展
urllib.unquote()目的是對url編碼進行解碼,與該函數對應的是編碼函數urllib.quote()
123
import urllib urllib.quote("河源")'%E6%B2%B3%E6%BA%90
URL為何要編碼、解碼?
通常如果一樣東西需要編碼,說明這樣東西并不適合傳輸。原因多種多樣,如Size過大,包含隱私數據。對于Url來說,之所以要進行編碼,是因為Url中有些字符會引起歧義。
例如,Url參數字符串中使用key=value鍵值對這樣的形式來傳參,鍵值對之間以符號分隔,如/s?q=abcie=utf-8。如果你的value字符串中包含了=或者,那么勢必會造成接收Url的服務器解析錯誤,因此必須將引起歧義的和=符號進行轉義,也就是對其進行編碼。
又如,Url的編碼格式采用的是ASCII碼,而不是Unicode,這也就是說你不能在Url中包含任何非ASCII字符,例如中文。否則如果客戶端瀏覽器和服務端瀏覽器支持的字符集不同的情況下,中文可能會造成問題。
網站名稱:python轉義函數,python自動轉義
當前路徑:http://www.yijiale78.com/article28/dschecp.html
成都網站建設公司_創新互聯,為您提供網站設計公司、品牌網站設計、虛擬主機、做網站、用戶體驗、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯