Python2中文處理紀(jì)要的實現(xiàn)方法
python2不是以unicode作為基本代碼字符類型,碰到亂碼的幾率是遠(yuǎn)遠(yuǎn)高于python3,但即便如此,相信很多人,也不想隨意的遷移到python3,這里就總結(jié)幾個我平常碰到的問題及解法。
1、文件中無法使用中文注釋
處理方法:
在代碼中增加 # -*- coding=UTF-8 -*- ,一般加在文件頭部第一行,如果第一行是腳本標(biāo)志,則放在第二行(實際仍然是python正本的第一行)。
隨后將文件另存為UTF-8格式。
此方法可以解決注釋中有中文,及字符串立即數(shù)中包含中文的問題。
2、unicode中文變量打印出來是亂碼
處理方法:
文件開始引入擴展庫的部分加入以下3行代碼。
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
3、utf-8 及 gbk互相轉(zhuǎn)換
直接看代碼:
#utf-8字符串轉(zhuǎn)換成GBK(GB2312及其它編碼也是這樣用)
print str.decode('UTF-8').encode('GBK')
#gbk轉(zhuǎn)換成utf-8
print str.decode('GBK').encode('UTF-8')
4、參數(shù)中的utf-8是用大寫還是小寫?
通常大小寫都可以,這不是python決定的,是系統(tǒng)的語言代碼設(shè)定決定的。
5、打開utf-8的文本文件
經(jīng)過1、2的設(shè)置,正常直接打開就可以,文件是什么編碼,讀出來就是什么編碼,個別仍有不行的可以使用擴展庫codecs:
import codecs ... with codecs.open(poetry_file, "r","utf-8") as f:
6、print打印出來的結(jié)構(gòu)中的漢字是亂碼
print僅打印一個utf-8的變量是不會有問題的,比如
a="漢字" print a #會正常顯示
但是如果用了接續(xù)顯示,比如:
print a, #將會顯示亂碼
如果是其它結(jié)構(gòu),諸如dict / list / class等,都會出現(xiàn)亂碼。
a = ["中文","測試"] print a #將會顯示亂碼
這種情況使用基本庫沒有什么好辦法,只能循環(huán)逐個打印內(nèi)容,比如:
... for item in items: print item
或者整合輸出,比如: print ', '.join(a)
還可以使用第三方的包,比如:
import uniout ... listnine = ['梨', '橘子', '蘋果', '香蕉'] print 'listnine list: %s' % listnine
7、變量本身顯示正常,循環(huán)遍歷出來的單個字符亂碼
大多情況是因為字符串不是unicode編碼。聲明字符串的時候使用 a = u'漢字' 這樣方式賦值的變量都是Unicode字符串,不會有問題。
如果是從外部傳入的變量,源頭情況又不知道,可以嘗試轉(zhuǎn)換成Unicode字符串:
str=unicode(str,"utf-8");
嗯,差不多就這些,想到再補充。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用python opencv對目錄下圖片進(jìn)行去重的方法
今天小編就為大家分享一篇使用python opencv對目錄下圖片進(jìn)行去重的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python控制多進(jìn)程與多線程并發(fā)數(shù)總結(jié)
本篇文章主要介紹了Python控制多進(jìn)程與多線程并發(fā)數(shù),詳細(xì)講訴了進(jìn)程和線程的區(qū)別,并介紹了處理方法,有需要的朋友可以了解一下。2016-10-10
python接口自動化之ConfigParser配置文件的使用詳解
這篇文章主要介紹了python接口自動化之ConfigParser配置文件的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
Python如何根據(jù)時間序列數(shù)據(jù)作圖
這篇文章主要介紹了Python如何根據(jù)時間序列數(shù)據(jù)作圖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例
這篇文章主要介紹了ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
使用Python構(gòu)建一個Hexo博客發(fā)布工具
雖然Hexo的命令行工具非常強大,但對于日常的博客撰寫和發(fā)布過程,我總覺得缺少一個直觀的圖形界面來簡化操作,下面我們就來看看如何使用Python構(gòu)建一個Hexo博客發(fā)布工具吧2025-04-04
jupyter-lab設(shè)置自啟動及遠(yuǎn)程連接開發(fā)環(huán)境
本文主要介紹了jupyter-lab設(shè)置自啟動及遠(yuǎn)程連接開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02

