新聞中心
Python中print如何正確使用,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、北流網(wǎng)站維護(hù)、網(wǎng)站推廣。
Python print會(huì)對輸出的文本做自動(dòng)的編碼轉(zhuǎn)換,而文件對象的write方法就不會(huì)做,因此,當(dāng)一些字符串用print輸出正常時(shí),write到文件確不一定和print的一樣。print轉(zhuǎn)換的目的編碼和環(huán)境變量有關(guān),Windows XP是轉(zhuǎn)換為gbk的。在linux下是按照環(huán)境變量來轉(zhuǎn)換的。在linux下使用locale命令就可以看到。比如我的是:
[zhaowei@papaya zhaowei]$ locale LANG=zh_CN LC_CTYPE="zh_CN" LC_NUMERIC="zh_CN" LC_TIME="zh_CN" LC_COLLATE="zh_CN" LC_MONETARY="zh_CN" LC_MESSAGES="zh_CN" LC_PAPER="zh_CN" LC_NAME="zh_CN" LC_ADDRESS="zh_CN" LC_TELEPHONE="zh_CN" LC_MEASUREMENT="zh_CN" LC_IDENTIFICATION="zh_CN" LC_ALL=
這個(gè)時(shí)候會(huì)認(rèn)為是gb2312的。在python中可以用locale模塊來獲得當(dāng)前環(huán)境的編碼:
import locale print locale.getdefaultlocale()
Python print在輸出時(shí)把字符串自動(dòng)裝換為這個(gè)編碼??纯聪旅?,"喆"這個(gè)字是很著名的一個(gè)在gb2312中沒有的字,當(dāng)把它轉(zhuǎn)換為gb2312的時(shí)候是會(huì)出錯(cuò)的。
#-*- encoding: gb18030 -*- import locale import sys, encodings, encodings.aliases # 現(xiàn)在a是unicode的 a = u'喆' print a.encode("gb2312")
上面這段代碼會(huì)報(bào)異常,就是這個(gè)原因。但如果是直接 print a 就可以輸出來 (假設(shè)你的環(huán)境變量是GBK或者GB18030或者UTF-8)。如果你的環(huán)境變量是GB2312的,那這個(gè)print一樣會(huì)報(bào)錯(cuò)!所以在處理其他地方來 的文本數(shù)據(jù)時(shí),***不要用GB2312的編碼,是中文數(shù)據(jù),一定要用GB18030或者UTF-8!
而用文件對象的write寫unicode的數(shù)據(jù)也是會(huì)出錯(cuò)的!需要做編碼轉(zhuǎn)換
#-*- encoding: gb18030 -*- import locale import sys, encodings, encodings.aliases # 現(xiàn)在a是unicode的 a = u'喆' f = open("aaa.txt", "w") f.write(a) f.close()
看完上述內(nèi)容,你們掌握Python中print如何正確使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
本文標(biāo)題:Python中print如何正確使用
URL網(wǎng)址:http://fisionsoft.com.cn/article/ieoiip.html