我遇到的問題是使用pandas的DataFrame to_csv方法實現csv文件輸出,但是遇到中文亂碼問題,已驗證的正確的方法是:
df.to_csv("cnn_predict_result.csv",encoding="utf_8_sig")
-----------------------------------------------------------------------------------------------------------------------------------------------------
轉載:
使用python2處理中文時,經常會出現亂碼問題,之前使用Python處理中文csv文件時,處理過程程序輸出出現了亂碼,最後在程序中能夠正常顯示出中文,但是導出文件時,使用excel打開出現了中文亂碼問題,但是使用ultraedit打開時,能正常顯示。現在找到了問題的所在,總結如下:
1)程序輸出中出現亂碼的原因是因爲python2中中文編碼的問題,需要注意的是要將處理的中文文件的編碼和python源文件的編碼保持一致,這樣不會出現中文亂碼。可以參考這兩篇文章關於Python腳本開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定和Python中用encoding聲明的文件編碼和文件的實際編碼之間的關係
2)在程序中能夠正常輸出中文,但是導出到文件後使用excel打開是出現中文亂碼是因爲excel能夠正確識別用gb2312、gbk、gb18030或utf_8 with BOM 編碼的中文,如果是utf_8 no BOM編碼的中文文件,excel打開會亂碼。
根據以上兩點,結合自己的情況:我使用的是jupyter的ide,創建的python源文件爲utf8 no BOM格式的編碼,而要處理的csv文件是用gbk編碼的,所以我需要將使用gbk編碼的csv文件轉爲utf_8編碼。
使用上面的代碼能夠將使用GBK編碼的文件轉爲UTF8編碼的文件。接下來就是真正處理csv文件了。
處理csv文件:
將data導出到文件中:
使用excel打開result_utf8_no_bom.csv和result_utf8_with_bom.csv,發現能夠正確識別result_utf8_with_bom.csv文件
轉自:http://blog.csdn.net/xw_classmate/article/details/51940430