python2最大的坑在於中文編碼問題,遇到中文報錯首先加u,再各類encode、decode。
當list、tuple、dict裏面有中文時,打印出來的是Unicode編碼,這個是無解的。
對中文編碼糾結的建議儘快換python3吧,python2且用且珍惜!python
1.open打開csv文件,用writer寫入帶有中文的數據時windows
# coding:utf-8 import csv f = open("xieru.csv", 'wb') writer = csv.writer(f) # 須要寫入的信息 data = ["客戶名稱", "行業類型", "客戶聯繫人", "職位", "聯繫方式", "郵箱","地址"] writer.writerow(data) # 寫入單行 # writer.writerows(datas) # 寫入多行 f.close()
2.打開csv文件,發現寫入的中文亂碼了app
1.中文亂碼問題一直是python2揮之不去的痛,這裏先弄清楚亂碼緣由:編碼
因此就致使了亂碼問題code
2.先把python裏面的中文字符串decode成utf-8,再encode爲gbk編碼blog
data.decode('utf-8').encode('gbk')接口
3.若是是讀取csv文件的話,就反過來:utf-8
data.decode('gbk').encode('utf-8')unicode
1.方案一:對字符串轉換編碼(這個太麻煩了,不推薦)字符串
# coding:utf-8 import csv f = open("xieru1.csv", 'wb') writer = csv.writer(f) # 須要寫入的信息 data = ["客戶名稱", "行業類型", "客戶聯繫人", "職位", "聯繫方式", "郵箱","地址"] a = [] for i in data: a.append(i.decode("utf-8").encode("gbk")) writer.writerow(a) # 寫入單行 # writer.writerows(datas) # 寫入多行 f.close()
2.方法二:用codecs提供的open方法來指定打開的文件的語言編碼,它會在讀取的時候自動轉換爲內部unicode (推薦)
# coding:utf-8 import csv, codecs import sys reload(sys) sys.setdefaultencoding('utf8') f = codecs.open("xx.csv", 'wb', "gbk") writer = csv.writer(f) writer.writerow(["客戶名稱", "行業類型", "客戶聯繫人", "職位", "聯繫方式", "郵箱","地址"]) # 多組數據存放list列表裏面 datas = [ ["客戶名稱", "行業類型", "客戶聯繫人", "職位", "聯繫方式", "郵箱","地址"], ["客戶名稱", "行業類型", "客戶聯繫人", "職位", "聯繫方式", "郵箱","地址"], ["客戶名稱", "行業類型", "客戶聯繫人", "職位", "聯繫方式", "郵箱","地址"], ] writer.writerows(datas) f.close()
python自動化交流 QQ羣:779429633
---------------------------------python接口自動化已出書-------------------------
全書購買地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695