Pythonでcsv.writerオブジェクトを使って新しいCSVファイルを作成する方法

この記事では、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`オブジェクトは非常に柔軟で、多くのカスタマイズオプションが提供されています。

コメント

コメントする

目次