【Python】CSVファイルを作成する方法

データの扱いに便利なCSVファイル。テキストフォーマットであるため初心者でも扱いやすいファイル形式の一つです。

そこで今回はPythonを使ってCSVファイルを作成する方法について解説していきます。

目次から探す

PythonでCSVファイルを作成する方法

Pythonには、CSVファイルを扱うための標準ライブラリcsvが用意されています。

このライブラリを使うことで、CSVファイルの読み書きが簡単に行えます。

csvライブラリはPythonの標準ライブラリなので、追加でインストールする必要はありません。

CSVファイルの作成手順

CSVファイルの作成は以下の手順で行います。

  1. CSVライブラリのインポート
  2. CSVファイルのオープン
  3. CSVライターの作成
  4. データの書き込み
  5. CSVファイルのクローズ

それぞれの手順を詳しく見ていきましょう。

CSVライブラリのインポート

まずはじめに、CSVライブラリをインポートします。

以下のようにimport文を使ってインポートします。


import csv

CSVファイルのオープン

次に、CSVファイルをオープンします。

open関数を使ってファイルを開き、ファイルオブジェクトを取得します。

ここでは、書き込みモード('w')でファイルを開きます。


csv_file = open('sample.csv', 'w', newline='', encoding='utf-8')

newline=''は、改行コードの扱いを指定するための引数で、CSVファイルの互換性を保つために指定しています。

encoding='utf-8'は、文字コードをUTF-8に指定しています。

CSVライターの作成

次に、CSVライターを作成します。

csv.writer関数を使って、CSVライターオブジェクトを取得します。


csv_writer = csv.writer(csv_file)

データの書き込み

CSVライターを使って、データをCSVファイルに書き込みます。

writerowメソッドを使って、1行ずつデータを書き込みます。


header = ['名前', '年齢', '住所']
data = [
    ['山田太郎', 25, '東京都'],
    ['鈴木花子', 30, '大阪府'],
    ['佐藤健二', 22, '福岡県']
]
csv_writer.writerow(header)
for row in data:
    csv_writer.writerow(row)

これでファイルに書き込むことができました。

CSVファイルのクローズ

最後に、CSVファイルをクローズします。

closeメソッドを使ってファイルを閉じます。


csv_file.close()

これで、CSVファイルの作成が完了しました。

上記のコードを実行すると、sample.csvという名前のCSVファイルが作成され、指定したデータが書き込まれます。

PythonでCSVファイルを作成する際の注意点

PythonでCSVファイルを作成する際には、いくつかの注意点があります。

ここでは、エンコーディングの指定、改行コードの指定、データのエスケープ処理について解説します。

エンコーディングの指定

CSVファイルを作成する際には、エンコーディングを指定することが重要です。

エンコーディングとは、文字をコンピュータで扱うための符号化方式のことです。

Pythonでは、デフォルトでUTF-8が使用されますが、他のエンコーディングを使用する場合は明示的に指定する必要があります。

例えば、Shift_JISでエンコーディングされたCSVファイルを作成する場合は、以下のようにopen関数のencoding引数に'shift_jis'を指定します。


import csv
with open('sample.csv', 'w', newline='', encoding='shift_jis') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['名前', '年齢', '住所'])
    writer.writerow(['山田太郎', '30', '東京都'])
    writer.writerow(['鈴木花子', '25', '神奈川県'])

改行コードの指定

CSVファイルを作成する際には、改行コードも指定することができます。

改行コードは、テキストファイルの行末に挿入される特殊な文字で、主にCR(キャリッジリターン)とLF(ラインフィード)の2種類があります。

Pythonでは、デフォルトでLFが使用されますが、他の改行コードを使用する場合は明示的に指定する必要があります。

例えば、CR+LFで改行されたCSVファイルを作成する場合は、以下のようにopen関数のnewline引数に'\r\n'を指定します。


import csv
with open('sample.csv', 'w', newline='\r\n', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['名前', '年齢', '住所'])
    writer.writerow(['山田太郎', '30', '東京都'])
    writer.writerow(['鈴木花子', '25', '神奈川県'])

データのエスケープ処理

CSVファイルに書き込むデータにカンマ(,)やダブルクォーテーション(")などの特殊な文字が含まれている場合、適切にエスケープ処理を行う必要があります。

PythonのCSVライブラリでは、デフォルトでダブルクォーテーションがエスケープ文字として使用されます。

例えば、以下のようなデータをCSVファイルに書き込む場合、ダブルクォーテーションが自動的にエスケープされます。


import csv
data = [
    ['名前', '年齢', '住所'],
    ['山田太郎', '30', '東京都, 渋谷区'],
    ['鈴木花子', '25', '神奈川県, "横浜市"']
]
with open('sample.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    for row in data:
        writer.writerow(row)

このコードを実行すると、以下のようなCSVファイルが作成されます。

名前,年齢,住所
山田太郎,30,"東京都, 渋谷区"
鈴木花子,25,"神奈川県, ""横浜市"""

このように、PythonのCSVライブラリを使用すれば、エンコーディングや改行コードの指定、データのエスケープ処理など、CSVファイル作成時の注意点を簡単に対処することができます。

1 2
目次から探す