この記事では、Pythonの標準ライブラリである`csv`モジュールを使用して、新しいCSVファイルを作成する方法について詳しく説明します。具体的なコード例とその詳細解説、さらには応用例まで、一通りの手法をご紹介します。
目次
csv.writerオブジェクトとは
`csv.writer`オブジェクトは、PythonでCSVファイルを書き込むためのオブジェクトです。このオブジェクトを使うと、Pythonのリストや辞書から簡単にCSVファイルを生成できます。
csv.writerオブジェクトの基本的な使い方
import csv
# CSVファイルを新規作成して書き込む
with open('sample.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Name', 'Age', 'Gender'])
writer.writerow(['Alice', 29, 'Female'])
writer.writerow(['Bob', 34, 'Male'])
こちらの例では、`sample.csv`という名前の新しいCSVファイルを作成しています。ファイルには`Name`, `Age`, `Gender`というヘッダーが含まれ、その下に具体的なデータが記入されています。
csv.writerの詳細解説
オプションとパラメータ
`csv.writer`オブジェクトは、いくつかのオプションやパラメータを指定することができます。
delimiterパラメータ
`delimiter`パラメータを使用すると、区切り文字を自由に設定できます。デフォルトでは`,`(カンマ)です。
import csv
# タブ区切りのCSVを作成
with open('sample_tab.csv', 'w', newline='') as f:
writer = csv.writer(f, delimiter='\t')
writer.writerow(['Name', 'Age', 'Gender'])
writer.writerow(['Alice', 29, 'Female'])
writer.writerow(['Bob', 34, 'Male'])
このコードでは、`delimiter=’\t’`と指定することで、タブ区切りのCSVファイルを生成しています。
quotecharパラメータ
このパラメータは、フィールドを囲むための一文字を指定します。デフォルトは`”`(ダブルクォート)です。
import csv
# シングルクォートでフィールドを囲む
with open('sample_quote.csv', 'w', newline='') as f:
writer = csv.writer(f, quotechar="'")
writer.writerow(['Name', 'Age', 'Gender'])
writer.writerow(['Alice', 29, 'Female'])
writer.writerow(['Bob', 34, 'Male'])
応用例
応用例1: 複数のリストからCSVファイルを生成
import csv
data = [
['Name', 'Age', 'Gender'],
['Alice', 29, 'Female'],
['Bob', 34, 'Male'],
['Charlie', 22, 'Non-binary']
]
with open('sample_list.csv', 'w', newline='') as f:
writer = csv.writer(f)
for row in data:
writer.writerow(row)
この例では、複数のリストが格納された`data`というリストからCSVファイルを生成しています。`for`ループを使用して、各リスト(行)をCSVに書き込んでいます。
応用例2: 辞書からCSVファイルを生成
import csv
header = ['Name', 'Age', 'Gender']
data = [
{'Name': 'Alice', 'Age': 29, 'Gender': 'Female'},
{'Name': 'Bob', 'Age': 34, 'Gender': 'Male'},
{'Name': 'Charlie', 'Age': 22, 'Gender': 'Non-binary'}
]
with open('sample_dict.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=header)
writer.writeheader()
for row in data:
writer.writerow(row)
応用例3: ネストされたデータからCSVを生成
import csv
header = ['Name', 'Subjects']
data = [
{'Name': 'Alice', 'Subjects': ['Math', 'Science']},
{'Name': 'Bob', 'Subjects': ['English', 'History']},
]
with
open('sample_nested.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=header)
writer.writeheader()
for row in data:
writer.writerow({'Name': row['Name'], 'Subjects': ','.join(row['Subjects'])})
まとめ
Pythonの`csv`モジュールを使うと、様々な形式や条件でCSVファイルを効率よく作成することができます。特に`csv.writer`オブジェクトは非常に柔軟で、多くのカスタマイズオプションが提供されています。
コメント