Python在向CSV檔案寫中文時亂碼的處理辦法

來源:互聯網
上載者:User

標籤:image   字串轉換   close   建議   ima   windows   enc   報錯   write   

前言

python2最大的坑在於中文編碼問題,遇到中文報錯首先加u,再各種encode、decode。
當list、tuple、dict裡面有中文時,列印出來的是Unicode編碼,這個是無解的。
對中文編碼糾結的建議儘快換python3吧,python2且用且珍惜!

csv中文亂碼

1.open開啟csv檔案,用writer寫入帶有中文的資料時

  • writer寫入單行
  • writers寫入多行
# coding:utf-8import csvf = open("xieru.csv", ‘wb‘)writer = csv.writer(f)# 需要寫入的資訊data = ["客戶名稱", "行業類型", "客戶連絡人", "職位", "連絡方式", "郵箱","地址"]writer.writerow(data)       # 寫入單行# writer.writerows(datas)    # 寫入多行f.close()

2.開啟csv檔案,發現寫入的中文亂碼了

編碼與解碼

1.中文亂碼問題一直是python2揮之不去的痛,這裡先弄清楚亂碼原因:

  • python2本身內部代碼的編碼有str和unicode兩種編碼
  • 然而檔案寫入到windows系統時候,windows上的是gb2312編碼

所以就導致了亂碼問題

2.先把python裡面的中文字串decode成utf-8,再encode為gbk編碼

data.decode(‘utf-8‘).encode(‘gbk‘)

3.如果是讀取csv檔案的話,就反過來:

data.decode(‘gbk‘).encode(‘utf-8‘)

解決方案

1.方案一:對字串轉換編碼(這個太麻煩了,不推薦)

# coding:utf-8import csvf = 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-8import csv, codecsimport sysreload(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在向CSV檔案寫中文時亂碼的處理辦法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.