データの扱いに便利なCSVファイル。テキストフォーマットであるため初心者でも扱いやすいファイル形式の一つです。
そこで今回はPythonを使ってCSVファイルを作成する方法について解説していきます。
PythonでCSVファイルを作成する方法
Pythonには、CSVファイルを扱うための標準ライブラリcsv
が用意されています。
このライブラリを使うことで、CSVファイルの読み書きが簡単に行えます。
CSVファイルの作成手順
CSVファイルの作成は以下の手順で行います。
- CSVライブラリのインポート
- CSVファイルのオープン
- CSVライターの作成
- データの書き込み
- CSVファイルのクローズ
それぞれの手順を詳しく見ていきましょう。
CSVライブラリのインポート
まずはじめに、CSVライブラリをインポートします。
以下のようにimport
文を使ってインポートします。
import csv
CSVファイルのオープン
次に、CSVファイルをオープンします。
open
関数を使ってファイルを開き、ファイルオブジェクトを取得します。
ここでは、書き込みモード('w'
)でファイルを開きます。
csv_file = open('sample.csv', 'w', newline='', encoding='utf-8')
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ファイル作成時の注意点を簡単に対処することができます。