本文目錄一覽:
- 1、python寫文件中文亂碼
- 2、csv 文件中,打開發現漢字顯示為亂碼,如何解決
- 3、pandas read_csv編碼問題
- 4、python解決csv文件用excel打開亂碼問題
- 5、python讀取csv文件時,數據內容含有中文,讀取出錯,怎麼辦
python寫文件中文亂碼
這是因為IDLE中使用gbk編碼,是ascii擴展字符集。
import sys
sys.getdefaultencoding()
‘ascii’解決方法:
在IDLE中執行的時候
去掉字符串前面的u字符,也不要加#coding這一行。
2. 先import sys,然後reload(sys),再使用sys.setdefaultencoding(“utf-8”)。然後就可以打印前面帶u的字符串了。(這是搜來的方法,實驗了一下,發現在我這沒有輸出了。。重啟了IDLE,才可以輸出,不過又變會ascii了)
在文件中執行
在文件開頭聲明#coding行,文件保存為utf8編碼,在字符串開頭加u
csv 文件中,打開發現漢字顯示為亂碼,如何解決
CSV是一種表格文件,但是它的編碼方式默認是ANSI,所以有些舊版本的EXCEL打開時中文就會顯示亂碼。
工具:office excel
步驟
準備一個有亂碼的CSV文件用於演示。
右鍵此CSV文件,選擇“用記事本打開”。
點擊“文件”–“另存為”。
發現默認編碼是“UTF-8”,所以一些Excel表格軟件就會顯示亂碼。對於這樣,只要改成ANSI就行了,按確定。
用Excel表格軟件再打開,就不會顯示亂碼了。
pandas read_csv編碼問題
一早上就連遇兩個中文編碼問題報錯,果然在python里中文編碼就是踩不完的坑。
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xca in position 8: invalid continuation byte
csv文件當中的中文編碼問題,打開時加入encoding=‘gb2312’即可解決。
pd.read_csv(‘a.csv’,encoding=’gb2312′)
pandas.errors.ParserError: Error tokenizing data. C error: Expected 4 fields in line 225, saw 6
因為csv文件默認分隔符是逗號分隔符,此時若文件中儲存的信息也含有逗號時,解析器會把儲存信息里的逗號也當成分隔符,就會導致列數不一致,read_csv打開報錯。特別是在中文裡又經常使用逗號,稍不注意就會出錯。
解決辦法是在寫入csv文件的時候使用其他分隔符,“|”,“\t”等。記得打開時也要加入分隔符說明delimiter = ‘\t’
pd.read_csv(‘a.csv’,delimiter=’\t’)
如果csv文件不是自己寫的,就手動把逗號刪掉再打開吧。
python解決csv文件用excel打開亂碼問題
【問題】
python輸出的csv文件用excel打開,裡面的中文會變成亂碼,但用window下的記事本或mac下的numbers打開就正常顯示。
原因是python輸出的文件是utf-8編碼寫入的,excel默認以gbk方式讀取,導致亂碼發生。
【解決方法1】文件產出時encoding設置為utf-8-sig
用excel打開csv時,excel會先檢查文件的第一個字符,來了解這個文件是什麼編碼方式,如果這個字符是BOM,excel就知道用utf-8的方式打開這個文件。python自帶了處理BOM的編碼方式uft-8-sig,因此只需要在文件產出時將encoding設置為utf-8-sig。
如果文件不是由python產出的,只需要以utf-8方式讀入再以utf-8-sig方式存儲即可
【解決方法2】懶人法,適用只含簡體中文的文件
用記事本打開,點擊另存為,右下角編碼方式選擇“ANSI”,這個過程是把這個文件改成gbk編碼格式,excel就是默認用gbk方式打開的。
參考: Python寫的csv文件,如何讓 Excel 雙擊打開不亂碼? – 雲+社區 – 騰訊雲
對編碼格式一竅不通的可以閱讀以下網頁
python筆記——二進制和文件編碼_砍柴姑娘Jourosy的博客-CSDN博客
編碼方式之ASCII、ANSI、Unicode概述 – 藍海人 – 博客園
【簡單總結】:
1. 首先需要了解 字符集 和 字符編碼 兩個概念,字符集定義了字符和二進制的一一對應關係,字符編碼規定了如何將字符的編號存儲到計算機中。
2. Unicode是字符集,包含了全球文字的唯一編碼,utf-8是編碼方式,將unicode以某種方式存儲到計算機中。
3. 有些字符集和編碼是結合在一起的,稱作字符集還是編碼都無所謂,比如ASCII,GBK
4. ANSI是各個國家地區不同擴展編碼方式的總稱,互不兼容(可以看出來通用性沒有utf好)
5. 不同編碼方式在轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。
python讀取csv文件時,數據內容含有中文,讀取出錯,怎麼辦
估計是亂碼造成,需要在讀取的py文件中指定編碼格式:
在文件開頭,設置成gbk格式import
os,sys,re,csv
reload(sys)
sys.setdefaultencoding(‘gbk’)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193417.html