Python print正確使用方法淺析
Python編程語(yǔ)言是一款比較新穎的編程語(yǔ)言,相對(duì)于其他語(yǔ)言來(lái)說(shuō),有很多不同的特點(diǎn)引起了大多數(shù)開發(fā)人員的興趣。在這里我們可以先從Python print的相關(guān)應(yīng)用方法來(lái)分析,初步了解這一語(yǔ)言的應(yīng)用方式。
Python print會(huì)對(duì)輸出的文本做自動(dòng)的編碼轉(zhuǎn)換,而文件對(duì)象的write方法就不會(huì)做,因此,當(dāng)一些字符串用print輸出正常時(shí),write到文件確不一定和print的一樣。print轉(zhuǎn)換的目的編碼和環(huán)境變量有關(guān),Windows XP是轉(zhuǎn)換為gbk的。在linux下是按照環(huán)境變量來(lái)轉(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模塊來(lái)獲得當(dāng)前環(huán)境的編碼:
- import locale
- print locale.getdefaultlocale()
Python print在輸出時(shí)把字符串自動(dòng)裝換為這個(gè)編碼。看看下面,"喆"這個(gè)字是很著名的一個(gè)在gb2312中沒(méi)有的字,當(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 就可以輸出來(lái) (假設(shè)你的環(huán)境變量是GBK或者GB18030或者UTF-8)。如果你的環(huán)境變量是GB2312的,那這個(gè)print一樣會(huì)報(bào)錯(cuò)!所以在處理其他地方來(lái) 的文本數(shù)據(jù)時(shí),***不要用GB2312的編碼,是中文數(shù)據(jù),一定要用GB18030或者UTF-8!
而用文件對(duì)象的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()
以上就是我們對(duì)Python print的相關(guān)介紹。
【編輯推薦】



















