<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        布同Python中文問題解決方法(總結(jié)了多位前人經(jīng)驗,初學(xué)者必看)

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:29:34
        文檔

        布同Python中文問題解決方法(總結(jié)了多位前人經(jīng)驗,初學(xué)者必看)

        布同Python中文問題解決方法(總結(jié)了多位前人經(jīng)驗,初學(xué)者必看):因為Python是自帶文檔,可以通過help函數(shù)來查詢每一個系統(tǒng)函數(shù)的用法解釋說明。一般來說,關(guān)鍵的使用方法和注意點(diǎn)在這個系統(tǒng)的文檔中都說的很清楚。我試圖在網(wǎng)上找過系統(tǒng)文檔的中文版的函數(shù)功能解釋,但是都沒有找到,所以我決定將就使用英文版的系統(tǒng)自帶的函
        推薦度:
        導(dǎo)讀布同Python中文問題解決方法(總結(jié)了多位前人經(jīng)驗,初學(xué)者必看):因為Python是自帶文檔,可以通過help函數(shù)來查詢每一個系統(tǒng)函數(shù)的用法解釋說明。一般來說,關(guān)鍵的使用方法和注意點(diǎn)在這個系統(tǒng)的文檔中都說的很清楚。我試圖在網(wǎng)上找過系統(tǒng)文檔的中文版的函數(shù)功能解釋,但是都沒有找到,所以我決定將就使用英文版的系統(tǒng)自帶的函

        因為Python是自帶文檔,可以通過help函數(shù)來查詢每一個系統(tǒng)函數(shù)的用法解釋說明。一般來說,關(guān)鍵的使用方法和注意點(diǎn)在這個系統(tǒng)的文檔中都說的很清楚。我試圖在網(wǎng)上找過系統(tǒng)文檔的中文版的函數(shù)功能解釋,但是都沒有找到,所以我決定將就使用英文版的系統(tǒng)自帶的函數(shù)解釋來學(xué)習(xí)。

          如果你想進(jìn)行Tkinter和wxPython編程,想要知道一般的widget的使用方法和屬性介紹,英文又不是太好的話,我推薦你,你可以去看看《Python與Tkinter編程》這本書,里面392頁到538頁的附錄B和附錄C選擇了常用的函數(shù)和近乎所有的屬性進(jìn)行介紹,精彩不容錯過。

        我上面提到的這個工具很快做好了。可以把沒有查詢過的函數(shù)進(jìn)行查詢,并保存關(guān)鍵字key和查詢結(jié)果info,便于下次直接從列表list中翻出來看;要是發(fā)現(xiàn)沒有查過,則手動添加到列表list——就是這樣一個簡單的小工具。一切看上去都很順利。但是問題也來了:英文的info打開后,解釋里面有的單詞不知道含義,查完單詞之后想寫在info里面,保存之后可以下次直接從硬盤打開看。但是在英文info中輸入中文,保存過程中就出現(xiàn)了解碼不了的問題,也就是解碼到中文部分就彈出下面這個錯誤來:

        UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' in position 61: ordinal not in range(128)

          其中的61這個位置是彈性的,就是info中加入了中文的那個位置。這個錯誤基本一直都存在,也就是當(dāng)我想要把修改過后的info寫入文件的時候:
        代碼如下:


        fp = open('tt.txt','w')
        fp.write(info.encode("UTF-8")) # 此處錯誤
        fp.close()


        這三行本身看上去沒有錯誤。但是就是在中間這行代碼處出現(xiàn)了錯誤。難道是encode的方式不對?我有嘗試了很多種編碼,如ANSI、UTF-8、SHIFT_JIS、GB2312、GBK等編碼,發(fā)現(xiàn)都不行。于是我就糊涂了。

        現(xiàn)在我已經(jīng)知道為什么錯誤了。問題就在于修改之后的info這個字符串變量。info中的數(shù)據(jù)是我從系統(tǒng)中通過help函數(shù)查到的字串(也就是原始的純英文的info)加上我手動輸入的中文得到的一個綜合的字符串。在我從系統(tǒng)中查詢系統(tǒng)文檔時,我對原始info進(jìn)行了如下保存:
        代碼如下:


        fp = open('tt.txt','w')
        fp.write(info)
        fp.close()


        注意,錯就錯在直接將原始info直接寫入到文件中。這樣寫之后的編碼方式大家知道是什么嗎?你打開tt.txt,查看編碼方式將會知道,其編碼方式是ANSI格式。于是錯誤就是這樣產(chǎn)生的:我查詢關(guān)鍵字key,將這個ANSI格式的字串info讀到控件中顯示,然后我有手動的添加了UTF-8格式的中文字符,于是通連起來形成的字符串info,就是一個混亂而具有多種編碼方式的字符串info,系統(tǒng)怎么write都無法只使用一種編碼方式將這個混合字串info再次寫到tt.txt中去。

          所以,結(jié)論就是:當(dāng)你在內(nèi)存中操作時,你可以隨意的不管編碼方式是什么,系統(tǒng)會自動的按照具體情況進(jìn)行判斷。但是你如果要用到中文字符,并且還要通過文件的方式去暫時保存數(shù)據(jù)或者字串的話,請你一定要在第一次寫文件的時候用utf-8的格式寫進(jìn)去,也就是如下的方式:
        代碼如下:


        fp = open('tt.txt','w')
        fp.write(info.encode("UTF-8"))
        fp.close()


        這將會保證你下次讀出來之后不用轉(zhuǎn)換編碼方式就可以直接打印和顯示,即使是作為控件文本也沒有問題。一定要注意這一點(diǎn)。

          問題找到了,下面進(jìn)行一些其他的討論。

        有的人說,只要使用了# -*- coding:utf-8 -*-不就行了嗎?其實(shí)不然。

          通過我的測試(我使用IDLE(Python2.5.4 GUI)編譯器。【1】無論我開頭用不用# -*- coding:utf-8 -*-,還是軟件中是不是設(shè)置了使用默認(rèn)的utf-8編碼方式,中文在控件和文件之間的使用都是沒有問題的。【2】info='中文'; 這樣的操作都是可以的。讀的時候使用一般的讀法就可以了。原因我想是因為編譯器升級,解決了中文顯示和使用的問題,早期中文語言不能夠使用的情況現(xiàn)在已經(jīng)不存在了。
        代碼如下:


        #coding=utf-8
        try:
        JAP=open("jap.txt","r")
        CHN=open("chn.txt","r")
        UTF=open("utf.txt","w")

        jap_text=JAP.readline()
        chn_text=CHN.readline()
        #先decode成UTF-16,再encode成UTF-8
        jap_text_utf8=jap_text.decode("SHIFT_JIS").encode("UTF-8")
        #不轉(zhuǎn)成utf-8也可以
        chn_text_utf8=chn_text.decode("GB2312").encode("UTF-8")
        #編碼方式大小寫都行utf-8也一樣
        UTF.write(jap_text_utf8)
        UTF.write(chn_text_utf8)
        UTF.close()
        except IOError,e:
        print "open file error",e


        這是我從http://www.gxlcms.com/article/26542.htm中《學(xué)習(xí)python處理python編碼》文章中摘錄的代碼。這里做一下解釋,上面的jap_text_utf8和chn_text_utf8都要保證是機(jī)器默認(rèn)的編碼方式,或者utf-8編碼方式,最重要的就是要保持一致。通過統(tǒng)一的編碼為utf-8后,就可以寫入一個文件中,再次讀出使用都沒有問題。讀的時候使用下面的普通方式即可:
        代碼如下:


        filen = open('tt.txt')
        info = filen.read()
        print info


        另外。有人使用了下面這種方式來編碼和轉(zhuǎn)換:
        代碼如下:


        import sys
        reload(sys)
        sys.setdefaultencoding('utf8')

        def ConvertCN(s):
        return s.encode('gb18030')

        def PrintFile(filename):
        f = file(filename, 'r')
        for f_line in f.readlines():
        print ConvertCN(f_line)
        f.close()

        if __name__ == "__main__":
        PrintFile('1.txt')
        print ConvertCN("\n****** 按任意鍵退出! ******")
        print sys.stdin.readline()


        通過我的測試,這種方式是不可行的。第二行如果去掉,第三行的setdefaultencoding函數(shù)將會無效;如果保留第二行,第三行和以后的代碼都得不到執(zhí)行(雖然不報錯)。這種方式是否可行請大家試試看。      
           另外,《python 中文亂碼 問題深入分析》http://www.gxlcms.com/article/26543.htm一文中講到了很多文本如何編碼的問題,令我大開眼界。文本編碼的原理:原來就是在文本開頭處添加適當(dāng)?shù)淖⑨尫杹肀硎緝?nèi)部的編碼方式,于是解釋器就會以某種對應(yīng)的規(guī)則去按照某種步長的字節(jié)或者靈活的方式去翻譯字節(jié),得到原文,翻譯的步長和規(guī)則完全是開頭的說明處對應(yīng)的。所以,如果你正文是單個字節(jié)的編碼方式,那么你就可以在你的編碼最前頭加上一個合適的規(guī)則,告訴別人如何翻譯你的被編碼文本即可。其中BOM_UTF_8等文本末尾的知識也是很有趣的,類似的還有BOM_UTF_16等等,不同的編碼方式文末的符號不同,大家可以注意一下。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        布同Python中文問題解決方法(總結(jié)了多位前人經(jīng)驗,初學(xué)者必看)

        布同Python中文問題解決方法(總結(jié)了多位前人經(jīng)驗,初學(xué)者必看):因為Python是自帶文檔,可以通過help函數(shù)來查詢每一個系統(tǒng)函數(shù)的用法解釋說明。一般來說,關(guān)鍵的使用方法和注意點(diǎn)在這個系統(tǒng)的文檔中都說的很清楚。我試圖在網(wǎng)上找過系統(tǒng)文檔的中文版的函數(shù)功能解釋,但是都沒有找到,所以我決定將就使用英文版的系統(tǒng)自帶的函
        推薦度:
        標(biāo)簽: 問題 python 了很多
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲一级特黄大片在线观看| 毛片免费vip会员在线看| 亚洲第一永久AV网站久久精品男人的天堂AV| 一区二区三区亚洲| 蜜桃视频在线观看免费视频网站WWW| 最新亚洲成av人免费看| 三年在线观看免费观看完整版中文| 亚洲精品视频免费| 青娱乐免费视频在线观看| 亚洲电影国产一区| 中文字幕在线免费| 亚洲婷婷第一狠人综合精品| 好大好硬好爽免费视频| 亚洲精品人成网线在线播放va| 黄a大片av永久免费| 黄色毛片免费在线观看| 国产亚洲精品自在线观看| 国产成人免费AV在线播放| 亚洲日本中文字幕| 毛片大全免费观看| 美女扒开屁股让男人桶爽免费| 精品国产日韩亚洲一区| 先锋影音资源片午夜在线观看视频免费播放 | 亚洲人AV在线无码影院观看| 永久黄网站色视频免费直播| 青青青视频免费观看| 亚洲成色在线综合网站| 久久国内免费视频| 黄色毛片免费网站| 亚洲成人免费在线| 午夜爱爱免费视频| 在线免费观看伊人三级电影| 亚洲第一成年人网站| 四虎永久在线精品免费影视| 中文字幕免费在线看电影大全| 亚洲综合男人的天堂色婷婷| 国产精品免费视频网站| 水蜜桃视频在线观看免费播放高清| 中文字幕亚洲综合久久2| 看全色黄大色大片免费久久| a毛片免费在线观看|