python转义是什么意思_Python什么情况下会输出转义符
print '中國(guó)' #輸出:中國(guó)
print ['中國(guó)'] #輸出:['\xd6\xd0\xb9\xfa']
print {'中國(guó)':'中國(guó)'} #輸出: {'\xd6\xd0\xb9\xfa': '\xd6\xd0\xb9\xfa'}
請(qǐng)問一下為什么在list和dict打印出來是轉(zhuǎn)義字符?
可以認(rèn)為一個(gè)是用的是str方法,目的是向終端顯示;一個(gè)用的repr方法,目的是把數(shù)據(jù)結(jié)構(gòu)和類型表達(dá)出來
這是 Python 2 特別討厭的一點(diǎn),以至于我實(shí)在忍受不了寫了個(gè) repl_py27 來繞過該問題。不過最終還是遷移到 Python 3 啦 =w=
Python 2 的世界是個(gè) ASCII 的世界,unicode 是后來加的,所以使用 repr 顯示的時(shí)候是把所有非 ASCII 的字符轉(zhuǎn)義顯示的。你要直接把字符串寫出來的話,Python 2 就不會(huì)進(jìn)行任何轉(zhuǎn)義了,于是在支持的終端上,中文就能正常顯示了。
注意 @socrates 說的是錯(cuò)的。print 遇到非字符串時(shí),會(huì)調(diào)用 str() 函數(shù)將對(duì)象轉(zhuǎn)成字符串再輸出:>>> class T(object):
... def __repr__(self):
... return ''
... def __str__(self):
... return ''
...
>>> print T()
而很多對(duì)象的 __str__ 方法是沒有定義的,于是 str() 函數(shù)改調(diào)用它的 __repr__ 方法。
又:Python 2 的字符串和 unicode 的 str() 輸出都是經(jīng)過轉(zhuǎn)義的。這也是我討厭 Python 2 的另一個(gè)重要原因:>>> u'中文'
u'\u4e2d\u6587'
>>> '中文'
'\xe4\xb8\xad\xe6\x96\x87'
玩蛇網(wǎng)文章,轉(zhuǎn)載請(qǐng)注明出處和文章網(wǎng)址:https://www.iplaypy.com/wenda/wd19803.html
相關(guān)文章 Recommend
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的python转义是什么意思_Python什么情况下会输出转义符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql自动增长id 溢出_MySQL
- 下一篇: 工商银行etc黑名单怎么解除