Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem verstümmelter Zeichen, die in Python in CSV geschrieben werden

So lösen Sie das Problem verstümmelter Zeichen, die in Python in CSV geschrieben werden

WBOY
WBOYOriginal
2016-12-05 13:27:141267Durchsuche

Anforderungshintergrund

Kürzlich ein E-Mail-Tagesprogramm für das Unternehmen entwickelt. Die E-Mails bestehen normalerweise aus Tabellen, Bildern und Anhängen. Anhänge werden im Allgemeinen standardmäßig in TXT-Dateien geschrieben, aber der PM hofft, dass die Anhänge in der E-Mail direkt mit Software wie Excel geöffnet werden können. Zuerst wollte er sie als Excel speichern, aber als er dachte, dass die Dateigröße Excel wäre um ein Vielfaches größer, die CSV-Datei wurde standardmäßig verwendet. Sie wurde auch mit Excel geöffnet, war aber immer noch eine Textdatei. Sie war klein und einfach zu speichern, also entschied ich mich schließlich, das CSV-Modul zum Speichern der Datei zu verwenden.

CSV-Datei mit Python schreiben

Python bietet ein integriertes Modul zum Lesen und Schreiben von CSV-Dateien. Ich werde es hier nicht vorstellen. Der Hauptzweck besteht darin, das Problem verstümmelter Zeichen zu lösen.

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)

Hinweis: Es gibt drei Sätze, um verstümmelte Zeichen zu vermeiden

file_obj = open(file_name, 'wb')
file_obj.write(codecs.BOM_UTF8) # 防止乱码
writer = csv.writer(file_obj)

Das Schreiben von codecs.BOM_UTF8 in den Dateikopf verhindert verstümmelte Zeichen. Die Dateien liegen alle im UTF-8-Codierungsformat vor

Danke fürs Lesen, ich hoffe, es kann allen helfen, vielen Dank für Ihre Unterstützung dieser Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn