Python2中文處理紀要的實現方法,python2紀要

來源:互聯網
上載者:User

Python2中文處理紀要的實現方法,python2紀要

python2不是以unicode作為基本代碼字元類型,碰到亂碼的幾率是遠遠高於python3,但即便如此,相信很多人,也不想隨意的遷移到python3,這裡就總結幾個我平常碰到的問題及解法。

1、檔案中無法使用中文注釋

處理方法:

在代碼中增加 # -*- coding=UTF-8 -*- ,一般加在檔案頭部第一行,如果第一行是指令碼標誌,則放在第二行(實際仍然是python正本的第一行)。

隨後將檔案另存新檔UTF-8格式。

此方法可以解決注釋中有中文,及字串立即數中包含中文的問題。

2、unicode中文變數列印出來是亂碼

處理方法:

檔案開始引入擴充庫的部分加入以下3行代碼。

import sysreload(sys)sys.setdefaultencoding('utf-8')

3、utf-8 及 gbk互相轉換

直接看代碼:

#utf-8字串轉換成GBK(GB2312及其它編碼也是這樣用)print str.decode('UTF-8').encode('GBK')#gbk轉換成utf-8print str.decode('GBK').encode('UTF-8')

4、參數中的utf-8是用大寫還是小寫?

通常大小寫都可以,這不是python決定的,是系統的語言代碼設定決定的。

5、開啟utf-8的文字檔

經過1、2的設定,正常直接開啟就可以,檔案是什麼編碼,讀出來就是什麼編碼,個別仍有不行的可以使用擴充庫codecs:

import codecs...with codecs.open(poetry_file, "r","utf-8") as f:

6、print列印出來的結構中的漢字是亂碼

print僅列印一個utf-8的變數是不會有問題的,比如

a="漢字"print a#會正常顯示

但是如果用了接續顯示,比如:

print a,#將會顯示亂碼

如果是其它結構,諸如dict / list / class等,都會出現亂碼。

a = ["中文","測試"]print a#將會顯示亂碼

這種情況使用基本庫沒有什麼好辦法,只能迴圈逐個列印內容,比如:

...for item in items:print item

或者整合輸出,比如: print ', '.join(a)

還可以使用第三方的包,比如:

import uniout...listnine = ['梨', '橘子', '蘋果', '香蕉']print 'listnine list: %s' % listnine

7、變數本身顯示正常,迴圈遍曆出來的單個字元亂碼

大多情況是因為字串不是unicode編碼。聲明字串的時候使用 a = u'漢字' 這樣方式賦值的變數都是Unicode字串,不會有問題。

如果是從外部傳入的變數,源頭情況又不知道,可以嘗試轉換成Unicode字串:

str=unicode(str,"utf-8");

嗯,差不多就這些,想到再補充。

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.