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

Python中使用不同編碼讀寫txt文件詳解

 更新時(shí)間:2015年05月28日 09:15:20   投稿:junjie  
這篇文章主要介紹了Python中使用不同編碼讀寫txt文件詳解,本文給出不同編碼下的讀寫文件代碼方法,需要的朋友可以參考下

復(fù)制代碼 代碼如下:

import os
import codecs
filenames=os.listdir(os.getcwd())

out=file("name.txt","w")
for filename in filenames:
 out.write(filename.decode("gb2312").encode("utf-8"))
out.close()

將執(zhí)行文件的當(dāng)前目錄及文件名寫入到name.txt文件中,以u(píng)tf-8格式保存
如果采用ANSI編碼保存,用如下代碼寫入即可:

復(fù)制代碼 代碼如下:

out.write(filename)

打開(kāi)文件并寫入

引用codecs模塊,對(duì)該模塊目前不了解。在此記錄下方法,有空掌握該模塊功能及用法。

復(fù)制代碼 代碼如下:

import codecs
file=codecs.open("lol.txt","w","utf-8")
file.write(u"我")
file.close()

讀取ANSI編碼的文本文件和utf-8編碼的文件

讀取ANSI編碼文件

建立一個(gè)文件test.txt,文件格式用ANSI,內(nèi)容為:

復(fù)制代碼 代碼如下:

abc中文

用python來(lái)讀取

復(fù)制代碼 代碼如下:

# coding=gbk
print open("Test.txt").read()

結(jié)果:abc中文
讀取utf-8編碼文件(無(wú)BOM)
把文件格式改成UTF-8:
復(fù)制代碼 代碼如下:

結(jié)果:abc涓 枃

顯然,這里需要解碼:
復(fù)制代碼 代碼如下:

# -*- coding: utf-8 -*-
import codecs
print open("Test.txt").read().decode("utf-8")

結(jié)果:abc中文

讀取utf-8編碼文件(有BOM)

某些軟件在保存一個(gè)以UTF-8編碼的文件時(shí),默認(rèn)會(huì)在文件開(kāi)始的地方插入三個(gè)不可見(jiàn)的字符(0xEF 0xBB 0xBF,即BOM)。在有些軟件可以控制是否插入BOM。如果在有BOM的情況下,在讀取時(shí)需要自己去掉這些字符,python中的codecs module定義了這個(gè)常量:

復(fù)制代碼 代碼如下:

# -*- coding: utf-8 -*-
import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
    data = data[3:]
print data.decode("utf-8")

結(jié)果:abc中文
在看下面的例子:

復(fù)制代碼 代碼如下:

# -*- coding: utf-8 -*-
data = open("name_utf8.txt").read()
u=data.decode("utf-8")
print u[1:]

打開(kāi)utf-8格式的文件并讀取utf-8字符串后,解碼變成unicode對(duì)象。但是會(huì)把附加的三個(gè)字符同樣進(jìn)行轉(zhuǎn)換,變成一個(gè)unicode字符。該字符不能被打印。所以為了正常顯示,采用u[1:]的方式,過(guò)濾到第一個(gè)字符。
注意:在處理unicode中文字符串的時(shí)候,必須首先對(duì)它調(diào)用encode函數(shù),轉(zhuǎn)換成其它編碼輸出。

設(shè)置python默認(rèn)編碼

復(fù)制代碼 代碼如下:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
print sys.getdefaultencoding()

今天碰到了 python 編碼問(wèn)題, 報(bào)錯(cuò)信息如下

復(fù)制代碼 代碼如下:

Traceback (most recent call last):
  File "ntpath.pyc", line 108, in join
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa1 in position 36: ordinal not in range(128)

顯然是當(dāng)前的編碼為ascii, 無(wú)法解析0xa1(十進(jìn)制為161, 超過(guò)上限128). 進(jìn)入python console后, 發(fā)現(xiàn)默認(rèn)編碼確實(shí)是 ascii, 驗(yàn)證過(guò)程為:
在python2.6中無(wú)法調(diào)用sys.setdefaultencoding()函數(shù)來(lái)修改默認(rèn)編碼,因?yàn)閜ython在啟動(dòng)的時(shí)候會(huì)調(diào)用site.py文件,在這個(gè)文件中設(shè)置完默認(rèn)編碼后會(huì)刪除sys的setdefaultencoding方法。不能再被調(diào)用了.  在確定sys已經(jīng)導(dǎo)入的情況下, 可以reload sys這個(gè)模塊之后, 再 sys.setdefaultencoding('utf8')

復(fù)制代碼 代碼如下:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
print sys.getdefaultencoding()

確實(shí)有效, 根據(jù) limodou 講解,  site.py 是 python 解釋器啟動(dòng)后, 默認(rèn)加載的一個(gè)腳本. 如果使用 python -S 啟動(dòng)的話, 將不會(huì)自動(dòng)加載 site.py.

上面寫的挺啰嗦的.

==================================
如何永久地將默認(rèn)編碼設(shè)置為utf-8呢?  有2種方法:
==================================

第一個(gè)方法<不推薦>: 編輯site.py, 修改setencoding()函數(shù), 強(qiáng)制設(shè)置為 utf-8
第二個(gè)方法<推薦>: 增加一個(gè)名為 sitecustomize.py, 推薦存放的路徑為 site-packages 目錄下
sitecustomize.py 是在 site.py 被import 執(zhí)行的, 因?yàn)?sys.setdefaultencoding() 是在 site.py 的最后刪除的, 所以, 可以在 sitecustomize.py 使用 sys.setdefaultencoding().

復(fù)制代碼 代碼如下:

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

既然 sitecustomize.py 能被自動(dòng)加載,  所以除了設(shè)置編碼外, 也可以設(shè)置一些其他的東西
字符串的編碼
復(fù)制代碼 代碼如下:

s1='中文'

像上面那樣直接輸入的字符串是按照代碼文件的編碼來(lái)處理的,如果是unicode編碼,有以下三種方式:
復(fù)制代碼 代碼如下:

1 s1 = u'中文'
2 s2 = unicode('中文','gbk')
3 s3 = s1.decode('gbk')

unicode是一個(gè)內(nèi)置函數(shù),第二個(gè)參數(shù)指示源字符串的編碼格式。
decode是任何字符串具有的方法,將字符串轉(zhuǎn)換成unicode格式,參數(shù)指示源字符串的編碼格式。
encode也是任何字符串具有的方法,將字符串轉(zhuǎn)換成參數(shù)指定的格式。

相關(guān)文章

  • 在PyTorch中自定義fit()函數(shù)中的操作代碼

    在PyTorch中自定義fit()函數(shù)中的操作代碼

    當(dāng)在進(jìn)行有監(jiān)督學(xué)習(xí)時(shí),我們可以使用fit()函數(shù)對(duì)模型進(jìn)行訓(xùn)練,通過(guò)迭代優(yōu)化模型的參數(shù),使其能夠更好地?cái)M合訓(xùn)練數(shù)據(jù),本文給大家介紹了在PyTorch中自定義fit()函數(shù)中的操作代碼,感興趣的同學(xué)可以跟著小編一起來(lái)看看
    2024-05-05
  • 如何使用Python一鍵修改上萬(wàn)個(gè)文件名

    如何使用Python一鍵修改上萬(wàn)個(gè)文件名

    各位有沒(méi)有遇到過(guò)需要批量整理多層文件夾結(jié)構(gòu)里各種類型(docx、excel、ppt)的文件材料的時(shí)候,下面這篇文章主要給大家介紹了關(guān)于如何使用Python一鍵修改上萬(wàn)個(gè)文件名的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Python類的定義、繼承及類對(duì)象使用方法簡(jiǎn)明教程

    Python類的定義、繼承及類對(duì)象使用方法簡(jiǎn)明教程

    這篇文章主要介紹了Python類的定義、繼承及類對(duì)象使用方法簡(jiǎn)明教程,本文用淺顯易懂的語(yǔ)言講解了類的定義、繼承及類對(duì)象的使用,非常實(shí)用易懂,需要的朋友可以參考下
    2015-05-05
  • 解決tensorflow由于未初始化變量而導(dǎo)致的錯(cuò)誤問(wèn)題

    解決tensorflow由于未初始化變量而導(dǎo)致的錯(cuò)誤問(wèn)題

    今天小編就為大家分享一篇解決tensorflow由于未初始化變量而導(dǎo)致的錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python并發(fā)concurrent.futures和asyncio實(shí)例

    Python并發(fā)concurrent.futures和asyncio實(shí)例

    這篇文章主要介紹了Python并發(fā)concurrent.futures和asyncio實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python解析MySQL Binlog日志分析情況

    Python解析MySQL Binlog日志分析情況

    文章介紹了如何使用Python解析MySQL的binlog日志,并通過(guò)分析binlog來(lái)了解數(shù)據(jù)庫(kù)的變動(dòng)情況,如大事務(wù)、頻繁更新的表等,文章詳細(xì)描述了binlog的結(jié)構(gòu)、事件類型以及如何通過(guò)解析這些事件來(lái)獲取所需的信息,最后,文章提供了一個(gè)示例代碼
    2025-01-01
  • python tornado微信開(kāi)發(fā)入門代碼

    python tornado微信開(kāi)發(fā)入門代碼

    這篇文章主要為大家詳細(xì)介紹了python tornado微信開(kāi)發(fā)入門代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python實(shí)現(xiàn)自動(dòng)整理文件的腳本

    Python實(shí)現(xiàn)自動(dòng)整理文件的腳本

    這篇文章主要介紹了Python實(shí)現(xiàn)自動(dòng)整理文件的腳本,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下
    2020-12-12
  • Python讀寫Redis數(shù)據(jù)庫(kù)操作示例

    Python讀寫Redis數(shù)據(jù)庫(kù)操作示例

    Redis是一個(gè)開(kāi)源的非關(guān)系型數(shù)據(jù)庫(kù),它采用C語(yǔ)言編寫,是一個(gè)key-value存儲(chǔ)系統(tǒng),它存儲(chǔ)的value類型很多,包括string(字符串),list(鏈表),set(集合),zset(有序集合),hash(哈希)
    2014-03-03
  • 使用Python生成你的LaTeX公式基礎(chǔ)使用

    使用Python生成你的LaTeX公式基礎(chǔ)使用

    這篇文章主要介紹了使用Python生成你的LaTeX公式基礎(chǔ)使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01

最新評(píng)論

电白县| 肇庆市| 洪洞县| 政和县| 双峰县| 长兴县| 彭水| 九龙县| 屏山县| 突泉县| 云龙县| 永泰县| 琼海市| 闸北区| 琼海市| 定日县| 海安县| 六安市| 普定县| 集安市| 桐城市| 呈贡县| 马尔康县| 南漳县| 浦东新区| 沙坪坝区| 沂源县| 云阳县| 金沙县| 柳州市| 牟定县| 乡城县| 金川县| 屏山县| 北碚区| 全椒县| 达拉特旗| 太湖县| 外汇| 商丘市| 壶关县|