python生成csv乱符号化問題解決方法

3147 ワード

需要背景
最近、会社のためにメール日報プログラムを開発しました.メールは一般的に表、画像、それから添付ファイルです.添付ファイルは一般的にデフォルトでtxtファイルに書かれていますが、PMはメールの添付ファイルが直接Excelというソフトで開くことを望んでいます.最初はExcelに保存したいと思っていましたが、Excelのファイルの体積が何倍もあると思うと、csvファイルのデフォルトもExcelで開いていますが、根本的にはテキストファイルで、体積が小さく、保存も便利です.そこで最終的にcsvモジュールを使用してファイルを保存することにした.
Pythonはcsvファイルを書きます
Pythonは内蔵モジュールの読み書きcsvファイルを提供しています.ここでは書くだけです.ここを読むと紹介しません.難しくありません.主に文字化けして問題を解決します.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 def   save2csv(file_name = None , header = None , data = None ): """ CSV , Excel :param file_name:  :param header:  , :param data:  :return: """ if   file_name  is   None   or   isinstance (file_name,  basestring is   False : raise   Exception( ' CSV , ' ) if   file_name.endswith( '.csv' is   False : file_name  + =   '.csv' file_obj  =   open (file_name,  'wb' ) file_obj.write(codecs.BOM_UTF8)  writer  =   csv.writer(file_obj) if   data  is   None   or   isinstance (data, ( tuple list ))  is   False : raise   Exception( ' CSV , ' ) if   header  is   not   None   and   isinstance (header, ( tuple list ))  is   True : writer.writerow(header) for   row  in   data: writer.writerow(row)
注意:文字化けしのための3つの言葉があります
1
2
3 file_obj  =   open (file_name,  'wb' ) file_obj.write(codecs.BOM_UTF8)  writer  =   csv.writer(file_obj)
ファイルヘッダにcodecsを書き込む.BOM_UTF 8は文字化けしを防ぐことができて、ファイルはすべてutf-8符号化フォーマットのです
 
転載先:https://www.cnblogs.com/paranoia/p/6165030.html