pythonutf8寫入文件
Ⅰ 怎麼在python里使用UTF-8編碼
行首定義
##-*-coding:utf-8-*-
Ⅱ 怎麼在Python里使用UTF-8編碼
在文件的頂部添加:
# -*- coding: utf-8 -*-
或者
str.encode("utf-8")
如果解決了您的問題請採納!
如果未解決請繼續追問
Ⅲ python 怎樣創建utf-8的文件
py2.7,需要調用codecs模塊來進行設置
#coding:utf-8
importsys
reload(sys)
sys.setdefaultencoding('utf-8')
importtraceback
importos
#含有中文時,最好用codecs打開
importcodecs
filepath=os.getcwd()+'/testfile.txt'
try:
withcodecs.open(filepath,'w+','utf-8')asf:
seq=[
'heheheheheheheheheheheh',
'hohohohohohohohohohohoho',
'hahahahahahahahahaha',
'這里又是哪裡 ']
f.write("******************** ")
f.writelines(seq)
withcodecs.open(filepath,'r','utf-8')asf:
foriinf.readlines():
printi
exceptException,e:
traceback.print_exc()
print"執行文件時報錯:"+str(e)
py3.6的open函數已經擴展了,可以直接設置encoding
#coding:utf-8
importtraceback
importos
filepath=os.getcwd()+'/testfile.txt'
try:
withopen(filepath,'w+',encoding='utf-8')asf:
seq=[
'heheheheheheheheheheheh',
'hohohohohohohohohohohoho',
'hahahahahahahahahaha',
'這里又是哪裡 ']
f.write("******************** ")
f.writelines(seq)
withopen(filepath,'r',encoding='utf-8')asf:
foriinf.readlines():
print(i)
exceptException:
traceback.print_exc()
print("執行文件時報錯")
Ⅳ Python excel 寫入的問題
(1)對Excel的寫操作:
#-*-coding:utf-8-*-
#導入xlwt模塊
importxlwt
#創建一個Workbook對象,這就相當於創建了一個Excel文件
book=xlwt.Workbook(encoding='utf-8',style_compression=0)
'''
Workbook類初始化時有encoding和style_compression參數
encoding:設置字元編碼,一般要這樣設置:w=Workbook(encoding='utf-8'),就可以在excel中輸出中文了。
默認是ascii。當然要記得在文件頭部添加:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
style_compression:表示是否壓縮,不常用。
'''
#創建一個sheet對象,一個sheet對象對應Excel文件中的一張表格。
#在電腦桌面右鍵新建一個Excel文件,其中就包含sheet1,sheet2,sheet3三張表
sheet=book.add_sheet('test',cell_overwrite_ok=True)
#其中的test是這張表的名字,cell_overwrite_ok,表示是否可以覆蓋單元格,其實是Worksheet實例化的一個參數,默認值是False
#向表test中添加數據
sheet.write(0,0,'EnglishName')#其中的'0-行,0-列'指定表中的單元,'EnglishName'是向該單元寫入的內容
sheet.write(1,0,'Marcovaldo')
txt1='中文名字'
sheet.write(0,1,txt1.decode('utf-8'))#此處需要將中文字元串解碼成unicode碼,否則會報錯
txt2='馬可瓦多'
sheet.write(1,1,txt2.decode('utf-8'))
#最後,將以上操作保存到指定的Excel文件中
book.save(r'e: est1.xls')#在字元串前加r,聲明為raw字元串,這樣就不會處理其中的轉義了。否則,可能會報錯
Ⅳ python怎麼中文寫txt文件
本文以txt 文本為例,只是介紹ANSI,Unicode,UTF-8 三種編碼的文件的讀寫過程,對於編碼不做深究了
一、用記事本另存為時,可以選擇保存文本使用的的幾種編碼模式,分別為:
ANSI:默認保存的編碼格式,採用本地操作系統默認的內碼,簡體中文一般為GB2312。
Unicode:UTF-16的小端位元組序,加上BOM簽名:0xFFFE。
Unicode bigendian:Unicode編碼:UTF-16的大端位元組序,加上BOM簽名:0xFEFF。
UTF-8:編碼格式是:UTF-8,其BOM為0xEF BB BF(UTF-8不區分位元組序,這個BOM僅標志UTF-8編碼)
- def read_out(self): with codecs.open(self.filename, 'r+') as get: return get.read().decode('gbk')
- f.write(self.filename.encode('gbk'))
- content = raw_input().decode(sys.stdin.encoding)
- type(content) 是unicode
Python對於讀取的txt文件,最好在讀取的時候進行decode成unicode編碼,
然後再寫入的時候進行encode成對應想要的編碼類型,這樣可以保證源文件的編碼方式不會改變,且中文不會亂碼
整個代碼過程保持使用unicode編碼方式利用try…except 來進行編碼判別具體使用了那種編碼方式
二、對於raw_input 通過鍵盤輸入的文字,通過sys模塊中的stdin.encodeing來進行解碼
暫時這么多
Ⅵ 我在寫一個python的網路爬蟲,寫入記事本的內容都是亂碼如何使寫入的數據以utf8或者gb2312的碼制寫入。
我從自己一個utf8的爬蟲程序裡面摘的。
程序開頭:
#!/usr/bin/envpython
#-*-coding:utf8-*-
importurllib
importurllib2
importstring
importre
importsys
type0=sys.getfilesystemencoding()#解決中文亂碼問題
後面做抓取程序的時候全部加上decode和encode。
pos1=text.find(term.decode("utf-8").encode(type0))
在輸入到txt的時候相應的分隔符也要decode和encode:
f.write(info+'!'.decode("utf-8").encode(type0))
希望能幫到你。
Ⅶ Windows (win10) 執行Python腳本,輸入文件失敗
因為windows默認使用gbk作為默認字元編碼格式,所以python以utf8寫入失敗。
這里強制python打開windows文件的時候,以utf8格式。
Error occurs when trying to redirect Python UTF-8 stdout to a file on Windows - Stack Overflow
Python: Use the UTF-8 mode on Windows! - DEV Community
1. Command line and environment — Python 3.9.6 documentation
Ⅷ 怎麼在Python里使用UTF-8編碼
概述
在python代碼即.py文件的頭部聲明即可
解析
py文件中的編碼
Python 默認腳本文件都是 ANSCII 編碼的,當文件 中有非 ANSCII 編碼范圍內的字元的時候就要使用"編碼指示"來修正一個 mole 的定義中,如果.py文件中包含中文字元(嚴格的說是含有非anscii字元),則需要在第一行或第二行指定編碼聲明:
# -*- coding=utf-8 -*-
#coding=utf-8
# 以上兩種選其一即可
其他的編碼如:gbk、gb2312也可以;否則會出現:
SyntaxError: Non-ASCII character 'xe4' in file test.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
python中的編碼與解碼
先說一下python中的字元串類型,在python中有兩種字元串類型,分別是 str 和 unicode,他們都是basestring的派生類;
str類型是一個包含Characters represent (at least) 8-bit bytes的序列;
unicode 的每個 unit 是一個 unicode obj;
在str的文檔中有這樣的一句話:
The string data type is also used to represent arrays of bytes, e.g., to hold data read from a file.
也就是說在讀取一個文件的內容,或者從網路上讀取到內容時,保持的對象為str類型;如果想把一個str轉換成特定編碼類型,需要把str轉為Unicode,然後從unicode轉為特定的編碼類型如:utf-8、gb2312等。
拓展內容
utf-8編碼
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,也是一種前綴碼。它可以用來表示Unicode標准中的任何字元,且其編碼中的第一個位元組仍與ASCII兼容,這使得原來處理ASCII字元的軟體無須或只須做少部分修改,即可繼續使用。因此,它逐漸成為電子郵件、網頁及其他存儲或發送文字的應用中,優先採用的編碼。
UTF-8使用一至六個位元組為每個字元編碼(盡管如此,2003年11月UTF-8被RFC 3629重新規范,只能使用原來Unicode定義的區域,U+0000到U+10FFFF,也就是說最多四個位元組):
1、128個US-ASCII字元只需一個位元組編碼(Unicode范圍由U+0000至U+007F)。
2、帶有附加符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則需要兩個位元組編碼(Unicode范圍由U+0080至U+07FF)。
3、其他基本多文種平面(BMP)中的字元(這包含了大部分常用字,如大部分的漢字)使用三個位元組編碼(Unicode范圍由U+0800至U+FFFF)。
4、其他極少使用的Unicode輔助平面的字元使用四至六位元組編碼(Unicode范圍由U+10000至U+1FFFFF使用四位元組,Unicode范圍由U+200000至U+3FFFFFF使用五位元組,Unicode范圍由U+4000000至U+7FFFFFFF使用六位元組)。
對上述提及的第四種字元而言,UTF-8使用四至六個位元組來編碼似乎太耗費資源了。但UTF-8對所有常用的字元都可以用三個位元組表示,而且它的另一種選擇,UTF-16編碼,對前述的第四種字元同樣需要四個位元組來編碼,所以要決定UTF-8或UTF-16哪種編碼比較有效率,還要視所使用的字元的分布范圍而定。不過,如果使用一些傳統的壓縮系統,比如DEFLATE,則這些不同編碼系統間的的差異就變得微不足道了。若顧及傳統壓縮演算法在壓縮較短文字上的效果不大,可以考慮使用Unicode標准壓縮格式(SCSU)。
互聯網工程工作小組(IETF)要求所有互聯網協議都必須支持UTF-8編碼。互聯網郵件聯盟(IMC)建議所有電子郵件軟體都支持UTF-8編碼。