python使用str & repr轉換字串

來源:互聯網
上載者:User
可能比較 low 還是記錄一下:

str 和 repr的使用過程

  1. str 是一個類型 (int, long 類似), 同樣她也可以作為一個Factory 方法 執行個體一個 string
  2. repr 是python 內建的函數, 用於保留一個 列印值在python 程式碼片段裡的真實狀態

好,以上全是廢話

>>> a = 1>>> a + ""---------------------------------------------------------------------------TypeErrorTraceback (most recent call last) in ()----> 1 a + ""TypeError: unsupported operand type(s) for +: 'int' and 'str'>>> a = 1>>> repr(a) + ""

可以看到, 我們可以通過使用 str 和 repr 來轉換字串

但是,str 只能提供一個 元string來做轉換, 不可以是一個變數(她不具備執行變數的能力)

repr 是一個函數, 所以實際上是傳參, 可以是變數和string

好多人都知道str()能把123數字轉成字串,python裡的str()甚至還能把列表、字典等對象轉成字串。這都好理解,可是一旦把str()和repr()放在一起,大家就全都不淡定了-_-!

來看一段代碼,仍是在IDLE裡互動:

  >>> str('hello')  'hello'  >>> repr('hello')  "'hello'"  >>> str('你好')  '\xc4\xe3\xba\xc3'  >>> repr('你好')  "'\\xc4\\xe3\\xba\\xc3'"

先看前兩句:英文的'hello'在str()後仍是'hello',可是在repr()後就變成了"'hello'"。這就說明,str()返回的就是字串本身,而repr()雖然返回的也是字串,但它是一個標準字串,官方解釋比較繞,我來解釋下吧。repr是representation及描述的意思,不是對人的描述,而是對python機器的描述,也就是它會將某物返回一個它在python中的描述。說人話:repr(obj)告訴我們obj這個變數在背地裡是什麼樣子,在背地裡是怎麼被python處理被python"玩弄"的。

在python裡,我們總會被眼睛欺騙。編輯器裡顯示的東西,並不總是它原本的面貌。python為了方便,總是表面上一套,背地裡又一套。

再來理解後兩句:中文的'你好'在str()後變成了編碼'\xc4\xe3\xba\xc3',在repr()後變成了"'\xc4\xe3\xba\xc3'"。`都加上了轉移符變成\,相當於把字串中的內容都“標準化”了。至於'變成"`只是為了說明repr()返回的是一個經過處理的新字串。

print後的str()和repr()

來看代碼:

  >>> print str('你好')  你好  >>> print repr('你好')  '\xc4\xe3\xba\xc3'

之前str('你好')顯示的是'\xc4\xe3\xba\xc3',而一經過print,就變成了正確的'你好'。上面說過了,命令列裡直接輸入一個變數,顯示的是它在python後台儲存的資料;而用print出來的東西,會顯出出盡量友好、讓人能看懂的東西。
理解了這個,對print這兩個結果的不同,也就全然理解了。然後也就放棄print作為考據的心了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.