【Python】文字列や配列をcsvとして出力(書き込み)する方法を解説

目次から探す

CSVファイルへの書き込みオプション

Pythonのcsvモジュールを使ってCSVファイルに書き込む際、いくつかのオプションを指定することができます。

これにより、区切り文字やクオート文字、改行コード、エンコーディングなどを変更することができます。

ここでは、それぞれのオプションについて説明します。

区切り文字の変更

デフォルトでは、CSVファイルの区切り文字はカンマ(,)ですが、これを変更することができます。

csv.writerオブジェクトを作成する際に、delimiter引数に任意の文字を指定することで区切り文字を変更できます。


import csv
data = [["apple", 100], ["banana", 200], ["orange", 300]]
with open("fruits.tsv", "w", newline="") as f:
    writer = csv.writer(f, delimiter="\t")
    for row in data:
        writer.writerow(row)

上記の例では、区切り文字をタブ(\t)に変更しています。

これにより、出力されるファイルはTSV形式(タブ区切り)になります。

クオート文字の変更

デフォルトでは、CSVファイルのクオート文字はダブルクオート(“)ですが、これを変更することができます。

csv.writerオブジェクトを作成する際に、quotechar引数に任意の文字を指定することでクオート文字を変更できます。


import csv
data = [["apple", "100 yen"], ["banana", "200 yen"], ["orange", "300 yen"]]
with open("fruits_quote.csv", "w", newline="") as f:
    writer = csv.writer(f, quotechar="'")
    for row in data:
        writer.writerow(row)

上記の例では、クオート文字をシングルクオート(‘)に変更しています。

改行コードの指定

open関数を使ってファイルを開く際に、newline引数に改行コードを指定することができます。

デフォルトでは、newline=""となっており、システムのデフォルトの改行コードが使用されます。

改行コードを明示的に指定する場合は、newline="\n"(Unix系)やnewline="\r\n"(Windows)などを指定します。


with open("fruits.csv", "w", newline="\n") as f:
    writer = csv.writer(f)
    for row in data:
        writer.writerow(row)

デフォルトの改行コードはPythonを実行した環境によって変わるため、改行コードの扱いを統一したい場合は改行コードを明示的に指定するのがいいでしょう。

エンコーディングの指定

open関数を使ってファイルを開く際に、encoding引数にエンコーディングを指定することができます。

デフォルトでは、システムのデフォルトのエンコーディングが使用されます。

エンコーディングを明示的に指定する場合は、encoding="utf-8"encoding="shift_jis"などを指定します。


with open("fruits_encoding.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    for row in data:
        writer.writerow(row)

出力したCSVファイルをほかのソフトウェアで開いた時に文字化けする場合、読み込む際のエンコード指定を間違えている可能性があります。

Visual Studio Codeなどの一部のソフトウェアはエンコーディングを指定して読み込むことができるので、文字化けが発生する場合はエンコーディングを変更して読み込んでみてください。

1 2

この記事のページ一覧
  1. 現在のページ
目次から探す