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

この記事では、文字列や配列データをCSVファイルに書き込む基本的な方法から、便利なオプション設定、エラーハンドリングまで、初心者でもわかりやすく解説します。

具体的なサンプルコードと実行例を通じて、実際のプロジェクトで役立つ知識を身につけましょう。

目次から探す

文字列をCSVファイルに書き込む方法

Pythonでは、文字列データをCSVファイルに書き込むために標準ライブラリのcsvモジュールを使用します。

このセクションでは、文字列データをCSVファイルに書き込む方法について詳しく解説します。

文字列データの準備

まず、CSVファイルに書き込むための文字列データを準備します。

以下は、サンプルの文字列データです。

data = [
    ["名前", "年齢", "職業"],
    ["田中太郎", "30", "エンジニア"],
    ["山田花子", "25", "デザイナー"],
    ["鈴木一郎", "40", "マネージャー"]
]

このデータは、各行がリスト形式で表現されており、CSVファイルの各行に対応します。

csv.writerを使った書き込み

csv.writerの基本的な使い方

csv.writerを使用してCSVファイルにデータを書き込む方法を説明します。

まず、CSVファイルを開き、csv.writerオブジェクトを作成します。

import csv
# CSVファイルを開く(書き込みモード)
with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)

writerowメソッドの使用例

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

先ほど準備したデータを使用して、CSVファイルに書き込んでみましょう。

import csv
data = [
    ["名前", "年齢", "職業"],
    ["田中太郎", "30", "エンジニア"],
    ["山田花子", "25", "デザイナー"],
    ["鈴木一郎", "40", "マネージャー"]
]
# CSVファイルを開く(書き込みモード)
with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    
    # データを1行ずつ書き込む
    for row in data:
        writer.writerow(row)

このコードを実行すると、output.csvというファイルが作成され、以下の内容が書き込まれます。

名前,年齢,職業
田中太郎,30,エンジニア
山田花子,25,デザイナー
鈴木一郎,40,マネージャー

csv.DictWriterを使った書き込み

csv.DictWriterの基本的な使い方

csv.DictWriterを使用すると、辞書形式のデータをCSVファイルに書き込むことができます。

まず、CSVファイルを開き、csv.DictWriterオブジェクトを作成します。

import csv
# CSVファイルを開く(書き込みモード)
with open('output_dict.csv', 'w', newline='', encoding='utf-8') as csvfile:
    fieldnames = ['名前', '年齢', '職業']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

writeheaderとwriterowメソッドの使用例

writeheaderメソッドを使用してヘッダー行を書き込み、writerowメソッドを使用してデータ行を書き込みます。

以下は、辞書形式のデータを使用した例です。

import csv
data = [
    {"名前": "田中太郎", "年齢": "30", "職業": "エンジニア"},
    {"名前": "山田花子", "年齢": "25", "職業": "デザイナー"},
    {"名前": "鈴木一郎", "年齢": "40", "職業": "マネージャー"}
]
# CSVファイルを開く(書き込みモード)
with open('output_dict.csv', 'w', newline='', encoding='utf-8') as csvfile:
    fieldnames = ['名前', '年齢', '職業']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
    # ヘッダー行を書き込む
    writer.writeheader()
    
    # データを1行ずつ書き込む
    for row in data:
        writer.writerow(row)

このコードを実行すると、output_dict.csvというファイルが作成され、以下の内容が書き込まれます。

名前,年齢,職業
田中太郎,30,エンジニア
山田花子,25,デザイナー
鈴木一郎,40,マネージャー

以上が、文字列データをCSVファイルに書き込む方法です。

次のセクションでは、配列データをCSVファイルに書き込む方法について解説します。

配列をCSVファイルに書き込む方法

Pythonでは、配列(リスト)をCSVファイルに書き込むのも非常に簡単です。

ここでは、配列データの準備から、csv.writerおよびcsv.DictWriterを使った書き込み方法について詳しく解説します。

配列データの準備

まずは、CSVファイルに書き込むための配列データを準備します。

以下は、サンプルの配列データです。

data = [
    ["名前", "年齢", "職業"],
    ["田中太郎", 30, "エンジニア"],
    ["鈴木花子", 25, "デザイナー"],
    ["佐藤次郎", 35, "マネージャー"]
]

csv.writerを使った書き込み

csv.writerを使うと、配列データを簡単にCSVファイルに書き込むことができます。

writerowsメソッドの使用例

writerowsメソッドを使うと、複数行のデータを一度に書き込むことができます。

以下にその例を示します。

import csv
# 書き込むデータ
data = [
    ["名前", "年齢", "職業"],
    ["田中太郎", 30, "エンジニア"],
    ["鈴木花子", 25, "デザイナー"],
    ["佐藤次郎", 35, "マネージャー"]
]
# CSVファイルに書き込む
with open('output.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerows(data)

このコードを実行すると、output.csvというファイルが作成され、以下のような内容が書き込まれます。

名前,年齢,職業
田中太郎,30,エンジニア
鈴木花子,25,デザイナー
佐藤次郎,35,マネージャー

csv.DictWriterを使った書き込み

csv.DictWriterを使うと、辞書形式のデータをCSVファイルに書き込むことができます。

配列データを辞書形式に変換してから書き込む方法を見ていきましょう。

配列を辞書形式に変換する方法

まず、配列データを辞書形式に変換します。

以下にその例を示します。

# 配列データ
data = [
    ["名前", "年齢", "職業"],
    ["田中太郎", 30, "エンジニア"],
    ["鈴木花子", 25, "デザイナー"],
    ["佐藤次郎", 35, "マネージャー"]
]
# ヘッダーを取得
header = data[0]
# データ部分を辞書形式に変換
dict_data = [dict(zip(header, row)) for row in data[1:]]

このコードを実行すると、dict_dataは以下のようになります。

[
    {"名前": "田中太郎", "年齢": 30, "職業": "エンジニア"},
    {"名前": "鈴木花子", "年齢": 25, "職業": "デザイナー"},
    {"名前": "佐藤次郎", "年齢": 35, "職業": "マネージャー"}
]

writerowsメソッドの使用例

辞書形式に変換したデータをcsv.DictWriterを使ってCSVファイルに書き込みます。

import csv
# 辞書形式のデータ
dict_data = [
    {"名前": "田中太郎", "年齢": 30, "職業": "エンジニア"},
    {"名前": "鈴木花子", "年齢": 25, "職業": "デザイナー"},
    {"名前": "佐藤次郎", "年齢": 35, "職業": "マネージャー"}
]
# CSVファイルに書き込む
with open('output_dict.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.DictWriter(file, fieldnames=["名前", "年齢", "職業"])
    writer.writeheader()
    writer.writerows(dict_data)

このコードを実行すると、output_dict.csvというファイルが作成され、以下のような内容が書き込まれます。

名前,年齢,職業
田中太郎,30,エンジニア
鈴木花子,25,デザイナー
佐藤次郎,35,マネージャー

以上で、配列データをCSVファイルに書き込む方法についての解説を終わります。

csv.writercsv.DictWriterを使い分けることで、さまざまな形式のデータを簡単にCSVファイルに書き込むことができます。

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

CSVファイルの書き込みには、さまざまなオプションを設定することができます。

これにより、特定のフォーマットや要件に合わせたCSVファイルを生成することが可能です。

ここでは、区切り文字、クォート文字、改行コードの設定方法について解説します。

区切り文字の変更

デフォルトでは、CSVファイルの区切り文字はカンマ(,)ですが、他の文字を区切り文字として使用することもできます。

例えば、タブ文字(\t)やセミコロン(;)などです。

以下は、区切り文字をタブ文字に変更する例です。

import csv
# データの準備
data = [
    ["名前", "年齢", "職業"],
    ["田中", 28, "エンジニア"],
    ["佐藤", 34, "デザイナー"]
]
# CSVファイルに書き込む
with open('output_tab.csv', 'w', newline='') as file:
    writer = csv.writer(file, delimiter='\t')
    writer.writerows(data)

このコードを実行すると、タブ文字で区切られたCSVファイルが生成されます。

クォート文字の設定

デフォルトでは、CSVファイルのフィールドがダブルクォート(")で囲まれますが、他のクォート文字を使用することもできます。

例えば、シングルクォート(')などです。

以下は、クォート文字をシングルクォートに変更する例です。

import csv
# データの準備
data = [
    ["名前", "年齢", "職業"],
    ["田中", 28, "エンジニア"],
    ["佐藤", 34, "デザイナー"]
]
# CSVファイルに書き込む
with open('output_quote.csv', 'w', newline='') as file:
    writer = csv.writer(file, quotechar="'", quoting=csv.QUOTE_ALL)
    writer.writerows(data)

このコードを実行すると、シングルクォートで囲まれたCSVファイルが生成されます。

改行コードの設定

デフォルトでは、CSVファイルの改行コードはプラットフォームに依存しますが、特定の改行コードを指定することもできます。

例えば、Windowsでは\r\n、Unix系では\nが一般的です。

以下は、改行コードを\r\nに設定する例です。

import csv
# データの準備
data = [
    ["名前", "年齢", "職業"],
    ["田中", 28, "エンジニア"],
    ["佐藤", 34, "デザイナー"]
]
# CSVファイルに書き込む
with open('output_newline.csv', 'w', newline='\r\n') as file:
    writer = csv.writer(file)
    writer.writerows(data)

このコードを実行すると、改行コードが\r\nのCSVファイルが生成されます。

これらのオプションを活用することで、さまざまなフォーマットのCSVファイルを簡単に生成することができます。

実践例

ここでは、実際にPythonを使って文字列データや配列データをCSVファイルに書き込む具体的な例を紹介します。

これらの例を通じて、基本的な使い方を理解し、実際のプロジェクトで活用できるようになることを目指します。

文字列データのCSV出力例

まずは、文字列データをCSVファイルに書き込む方法を見ていきましょう。

以下の例では、簡単な文字列データをCSVファイルに書き込む方法を示します。

import csv
# 書き込む文字列データ
data = [
    ["名前", "年齢", "職業"],
    ["田中太郎", "30", "エンジニア"],
    ["鈴木花子", "25", "デザイナー"],
    ["佐藤次郎", "40", "マネージャー"]
]
# CSVファイルに書き込む
with open('output.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    for row in data:
        writer.writerow(row)
print("文字列データがCSVファイルに書き込まれました。")

このコードでは、csv.writerを使って文字列データをCSVファイルに書き込んでいます。

writer.writerowメソッドを使って、リストの各行をCSVファイルに書き込んでいます。

配列データのCSV出力例

次に、配列データをCSVファイルに書き込む方法を見ていきましょう。

以下の例では、配列データをCSVファイルに書き込む方法を示します。

import csv
# 書き込む配列データ
data = [
    {"名前": "田中太郎", "年齢": 30, "職業": "エンジニア"},
    {"名前": "鈴木花子", "年齢": 25, "職業": "デザイナー"},
    {"名前": "佐藤次郎", "年齢": 40, "職業": "マネージャー"}
]
# CSVファイルに書き込む
with open('output_dict.csv', 'w', newline='', encoding='utf-8') as file:
    fieldnames = ["名前", "年齢", "職業"]
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    
    writer.writeheader()  # ヘッダーを書き込む
    for row in data:
        writer.writerow(row)
print("配列データがCSVファイルに書き込まれました。")

このコードでは、csv.DictWriterを使って配列データをCSVファイルに書き込んでいます。

writer.writeheaderメソッドを使ってヘッダー行を最初に書き込み、その後にwriter.writerowメソッドを使って各行のデータを書き込んでいます。

これらの例を参考にして、文字列データや配列データをCSVファイルに書き込む方法を理解し、実際のプロジェクトで活用してみてください。

エラーハンドリング

CSVファイルの書き込み中にエラーが発生することがあります。

これらのエラーを適切に処理することで、プログラムの信頼性を向上させることができます。

ここでは、ファイルのオープンエラーと書き込みエラーについて解説します。

ファイルのオープンエラー

ファイルを開く際にエラーが発生することがあります。

例えば、指定したパスが存在しない場合や、ファイルに対する書き込み権限がない場合です。

これらのエラーをキャッチして適切に処理する方法を見てみましょう。

import csv
# 書き込みたいデータ
data = [["Name", "Age"], ["Alice", 30], ["Bob", 25]]
try:
    # ファイルを開く
    with open('output.csv', 'w', newline='') as file:
        writer = csv.writer(file)
        writer.writerows(data)
except FileNotFoundError:
    print("指定したファイルパスが存在しません。")
except PermissionError:
    print("ファイルに対する書き込み権限がありません。")
except Exception as e:
    print(f"予期しないエラーが発生しました: {e}")

このコードでは、tryブロック内でファイルを開き、csv.writerを使ってデータを書き込んでいます。

exceptブロックでは、特定のエラー(FileNotFoundErrorPermissionError)をキャッチして適切なメッセージを表示します。

また、Exceptionクラスを使って予期しないエラーもキャッチしています。

書き込みエラー

ファイルの書き込み中にエラーが発生することもあります。

例えば、ディスクの空き容量が不足している場合や、ファイルが他のプロセスによってロックされている場合です。

これらのエラーをキャッチして適切に処理する方法を見てみましょう。

import csv
# 書き込みたいデータ
data = [["Name", "Age"], ["Alice", 30], ["Bob", 25]]
try:
    # ファイルを開く
    with open('output.csv', 'w', newline='') as file:
        writer = csv.writer(file)
        writer.writerows(data)
except IOError as e:
    print(f"ファイルの書き込み中にエラーが発生しました: {e}")
except Exception as e:
    print(f"予期しないエラーが発生しました: {e}")

このコードでは、IOErrorをキャッチしてファイルの書き込み中に発生したエラーを処理しています。

IOErrorは、入出力操作に関連するエラーをキャッチするために使用されます。

また、Exceptionクラスを使って予期しないエラーもキャッチしています。

エラーハンドリングを適切に行うことで、プログラムの信頼性とユーザーエクスペリエンスを向上させることができます。

エラーが発生した場合でも、適切なメッセージを表示してユーザーに状況を知らせることが重要です。

目次から探す