最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 設(shè)置文件編碼格式的實(shí)現(xiàn)方法

 更新時(shí)間:2017年12月21日 10:03:16   作者:Abyjun  
下面小編就為大家分享一篇python 設(shè)置文件編碼格式的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

如果要在python2的py文件里面寫中文,則必須要添加一行聲明文件編碼的注釋,否則python2會默認(rèn)使用ASCII編碼。(python3已經(jīng)沒有這個(gè)問題了,python3默認(rèn)的文件編碼是UTF-8)

必須將編碼注釋放在第一行或者第二行,一般來說,Python文件的前兩行要這樣寫:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

其中第一行是指定python解釋器,第二行是指定python文件編碼方式,設(shè)置編碼方式有以下可選的方法

1. 帶等號的設(shè)置方法:

#!/usr/bin/python
# coding=<encoding name>

2. 最常見的,帶冒號的(大多數(shù)編輯器都可以正確識別的):

#!/usr/bin/python
# -*- coding: <encoding name> -*-

3. vim的:

#!/usr/bin/python
# vim: set fileencoding=<encoding name> :

設(shè)置頭部的編碼聲明有以下幾個(gè)作用:

如果代碼中有中文注釋,就需要此聲明

比較高級的編輯器(比如我的emacs),會根據(jù)頭部聲明,將此作為代碼文件的格式。

程序會通過頭部聲明,解碼初始化 u”人生苦短”,這樣的unicode對象,(所以頭部聲明和代碼的存儲格式要一致)

設(shè)置默認(rèn)解碼格式

import sys  #引用sys模塊進(jìn)來,并不是進(jìn)行sys的第一次加載 
reload(sys) #重新加載sys 
sys.setdefaultencoding('utf8') ##調(diào)用setdefaultencoding函數(shù)

這里特別注意的是第二行的reload(sys),這個(gè)一定不能少,少了的話就不能正確運(yùn)行。那么為什么要重新加載,而直接引用過來則不能調(diào)用該函數(shù)呢?因?yàn)閟etdefaultencoding函數(shù)在被系統(tǒng)調(diào)用后被刪除了,所以通過import引用進(jìn)來時(shí)其實(shí)已經(jīng)沒有了,所以必須reload一次sys模塊,這樣setdefaultencoding才會為可用,才能在代碼里修改解釋器當(dāng)前的字符編碼。

在python安裝目錄的Lib文件夾下,有一個(gè)叫site.py的文件,在里面可以找到main() –> setencoding()–>sys.setdefaultencoding(encoding),因?yàn)檫@個(gè)site.py每次啟動python解釋器時(shí)會自動加載,所以main函數(shù)每次都會被執(zhí)行,setdefaultencoding函數(shù)一出來就已經(jīng)被刪除了。

關(guān)于 sys.defaultencoding,這個(gè)在解碼沒有明確指明解碼方式的時(shí)候使用。比如我有如下代碼:

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
s = '中文' # 注意這里的 str 是 str 類型的,而不是 unicode 
s.encode('gb18030') 

這句代碼將 s 重新編碼為 gb18030 的格式,即進(jìn)行 unicode -> str 的轉(zhuǎn)換。因?yàn)?s 本身就是 str 類型的,因此

Python 會自動的先將 s 解碼為 unicode ,然后再編碼成 gb18030。因?yàn)榻獯a是python自動進(jìn)行的,我們沒有指明解碼方式,python 就會使用 sys.defaultencoding 指明的方式來解碼。很多情況下 sys.defaultencoding 是

ANSCII,如果 s 不是這個(gè)類型就會出錯(cuò)。拿上面的情況來說,我的 sys.defaultencoding 是 anscii,而 s 的編碼方式和文件的編碼方式一致,是 utf8 的,所以出錯(cuò)了:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 
0: ordinal not in range(128) 

對于這種情況,我們有兩種方法來改正錯(cuò)誤:

一是明確的指示出 s 的編碼方式

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
s = '中文' 
s.decode('utf-8').encode('gb18030') 

二是更改 sys.defaultencoding 為文件的編碼方式

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
import sys 
reload(sys) # Python2.5 初始化后會刪除 sys.setdefaultencoding 這個(gè)方法,我們需要重新載入 
sys.setdefaultencoding('utf-8') 
str = '中文' 
str.encode('gb18030')

以上這篇python 設(shè)置文件編碼格式的實(shí)現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 切換root 執(zhí)行命令的方法

    python 切換root 執(zhí)行命令的方法

    今天小編就為大家分享一篇python 切換root 執(zhí)行命令的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python如何使用代碼運(yùn)行助手

    python如何使用代碼運(yùn)行助手

    在本篇文章里小編給大家分享了關(guān)于python代碼運(yùn)行助手用法,需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • 淺談pytorch中stack和cat的及to_tensor的坑

    淺談pytorch中stack和cat的及to_tensor的坑

    這篇文章主要介紹了pytorch中stack和cat的及to_tensor的坑,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python使用Bokeh實(shí)現(xiàn)交互式圖表的創(chuàng)建

    Python使用Bokeh實(shí)現(xiàn)交互式圖表的創(chuàng)建

    Bokeh?是一個(gè)流行的?Python?數(shù)據(jù)可視化庫,可以生成高質(zhì)量的交互式圖表,這篇文章主要就介紹了Python如何使用Bokeh實(shí)現(xiàn)交互式圖表的創(chuàng)建,需要的可以參考一下
    2023-06-06
  • python write無法寫入文件的解決方法

    python write無法寫入文件的解決方法

    今天小編就為大家分享一篇python write無法寫入文件的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python數(shù)據(jù)清洗中的時(shí)間格式化實(shí)現(xiàn)

    python數(shù)據(jù)清洗中的時(shí)間格式化實(shí)現(xiàn)

    本文主要介紹了python數(shù)據(jù)清洗中的時(shí)間格式化實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • python實(shí)現(xiàn)嵌套列表平鋪的兩種方法

    python實(shí)現(xiàn)嵌套列表平鋪的兩種方法

    今天小編就為大家分享一篇python實(shí)現(xiàn)嵌套列表平鋪的兩種方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python實(shí)現(xiàn)順時(shí)針打印矩陣

    python實(shí)現(xiàn)順時(shí)針打印矩陣

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)順時(shí)針打印矩陣,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • python單元測試框架pytest介紹

    python單元測試框架pytest介紹

    這篇文章介紹了python的單元測試框架pytest,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • numpy中np.dstack()、np.hstack()、np.vstack()用法

    numpy中np.dstack()、np.hstack()、np.vstack()用法

    numpy里dstack, hstack, vstack, 都有拼接的作用,本文詳細(xì)的介紹了np.dstack()、np.hstack()、np.vstack()用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論

仁化县| 石泉县| 大关县| 无锡市| 长葛市| 海晏县| 东丰县| 肇庆市| 黄石市| 易门县| 固原市| 房山区| 鲁甸县| 潢川县| 静安区| 南投市| 雅江县| 武城县| 陈巴尔虎旗| 平南县| 宁德市| 岢岚县| 惠水县| 宿松县| 嵊泗县| 陈巴尔虎旗| 读书| 始兴县| 太原市| 广元市| 盘山县| 楚雄市| 英超| 濉溪县| 瓦房店市| 凤冈县| 龙海市| 台江县| 镇坪县| 康保县| 朝阳市|