python使用str & repr轉(zhuǎn)換字符串
可能比較 low 還是記錄一下:
str 和 repr的使用過(guò)程
- str 是一個(gè)類(lèi)型 (int, long 類(lèi)似), 同樣她也可以作為一個(gè)工廠方法 實(shí)例一個(gè) string
- repr 是python 內(nèi)置的函數(shù), 用于保留一個(gè) 打印值在python 代碼片段里的真實(shí)狀態(tài)
好,以上全是廢話
>>> a = 1 >>> a + "" --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-5-ebf3ab7f3a34> in <module>() ----> 1 a + "" TypeError: unsupported operand type(s) for +: 'int' and 'str' >>> a = 1 >>> repr(a) + ""
可以看到, 我們可以通過(guò)使用 str 和 repr 來(lái)轉(zhuǎn)換字符串
但是,str 只能提供一個(gè) 元string來(lái)做轉(zhuǎn)換, 不可以是一個(gè)變量(她不具備執(zhí)行變量的能力)
repr 是一個(gè)函數(shù), 所以實(shí)際上是傳參, 可以是變量和string
好多人都知道str()能把123數(shù)字轉(zhuǎn)成字符串,python里的str()甚至還能把列表、字典等對(duì)象轉(zhuǎn)成字符串。這都好理解,可是一旦把str()和repr()放在一起,大家就全都不淡定了-_-!
來(lái)看一段代碼,仍是在IDLE里交互:
>>> str('hello') 'hello' >>> repr('hello') "'hello'" >>> str('你好') '\xc4\xe3\xba\xc3' >>> repr('你好') "'\\xc4\\xe3\\xba\\xc3'"
先看前兩句:英文的'hello'在str()后仍是'hello',可是在repr()后就變成了"'hello'"。這就說(shuō)明,str()返回的就是字符串本身,而repr()雖然返回的也是字符串,但它是一個(gè)標(biāo)準(zhǔn)字符串,官方解釋比較繞,我來(lái)解釋下吧。repr是representation及描述的意思,不是對(duì)人的描述,而是對(duì)python機(jī)器的描述,也就是它會(huì)將某物返回一個(gè)它在python中的描述。說(shuō)人話:repr(obj)告訴我們obj這個(gè)變量在背地里是什么樣子,在背地里是怎么被python處理被python"玩弄"的。
在python里,我們總會(huì)被眼睛欺騙。編輯器里顯示的東西,并不總是它原本的面貌。python為了方便,總是表面上一套,背地里又一套。
再來(lái)理解后兩句:中文的'你好'在str()后變成了編碼'\xc4\xe3\xba\xc3'
,在repr()后變成了"'\xc4\xe3\xba\xc3
'"。`都加上了轉(zhuǎn)移符變成\,相當(dāng)于把字符串中的內(nèi)容都“標(biāo)準(zhǔn)化”了。至于'變成"`只是為了說(shuō)明repr()返回的是一個(gè)經(jīng)過(guò)處理的新字符串。
print后的str()和repr()
來(lái)看代碼:
>>> print str('你好') 你好 >>> print repr('你好') '\xc4\xe3\xba\xc3'
之前str('你好')顯示的是'\xc4\xe3\xba\xc3',而一經(jīng)過(guò)print,就變成了正確的'你好'。上面說(shuō)過(guò)了,命令行里直接輸入一個(gè)變量,顯示的是它在python后臺(tái)存儲(chǔ)的數(shù)據(jù);而用print出來(lái)的東西,會(huì)顯出出盡量友好、讓人能看懂的東西。
理解了這個(gè),對(duì)print這兩個(gè)結(jié)果的不同,也就全然理解了。然后也就放棄print作為考據(jù)的心了。
相關(guān)文章
VScode查看python f.write()的文件亂碼問(wèn)題及解決方法
這篇文章主要介紹了VScode查看python f.write()的文件亂碼問(wèn)題及解決方法,本文通過(guò)圖文并茂的形式給大家分享解決方法,需要的朋友可以參考下2023-02-02淺談python已知元素,獲取元素索引(numpy,pandas)
今天小編就為大家分享一篇淺談python已知元素,獲取元素索引(numpy,pandas),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11python實(shí)現(xiàn)兩個(gè)dict合并與計(jì)算操作示例
這篇文章主要介紹了python實(shí)現(xiàn)兩個(gè)dict合并與計(jì)算操作,結(jié)合具體實(shí)例形式分析了Python使用collections.Counter進(jìn)行字典dict合并與遍歷輸出相關(guān)操作技巧,需要的朋友可以參考下2019-07-07python制作機(jī)器人的實(shí)現(xiàn)方法
機(jī)器人自動(dòng)回復(fù)在很多場(chǎng)景中都可以用的上,本文主要介紹了python制作機(jī)器人的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06詳解Python實(shí)現(xiàn)字典合并的四種方法
這篇文章主要為大家詳細(xì)介紹了Python的合并字典的四種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03Python+OpenCV之形態(tài)學(xué)操作詳解
這篇文章主要為大家詳細(xì)介紹了Python?OpenCV中的形態(tài)學(xué)操作(開(kāi)運(yùn)算、閉運(yùn)算)的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-09-09Python Flask請(qǐng)求擴(kuò)展與中間件相關(guān)知識(shí)總結(jié)
今天帶大家學(xué)習(xí)的是關(guān)于Python Flask的相關(guān)知識(shí),文章圍繞著Flask請(qǐng)求擴(kuò)展與中間件的知識(shí)展開(kāi),文中有非常詳細(xì)的介紹,需要的朋友可以參考下2021-06-06pytorch 多分類(lèi)問(wèn)題,計(jì)算百分比操作
這篇文章主要介紹了pytorch 多分類(lèi)問(wèn)題,計(jì)算百分比操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07Python 作圖實(shí)現(xiàn)坐標(biāo)軸截?cái)?打斷)的效果
這篇文章主要介紹了Python 作圖實(shí)現(xiàn)坐標(biāo)軸截?cái)?打斷)的效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04