Python CSV: スプレッドシートの読み取りと書き込み

Python で CSV データを処理する方法を学びます。効率的なテーブル解析のために csv.reader、csv.writer、および DictReader/DictWriter をマスターします。

エディターで試してみる

概要

CSV (カンマ区切り値) は、スプレッドシートやリレーショナル データベースからデータをエクスポートおよびインポートするための普遍的な形式です。 CSV ファイルは単純なテキスト ファイルであるため、分析ツール、データベース プラットフォーム、プログラミング言語で広くサポートされています。 Python には、パンダのようなサードパーティ ライブラリを必要とせずに、表形式データの解析、書き込み、操作用に特に最適化された組み込みの「csv」モジュールが備えられています。

csv モジュールは、リストベースのリーダー/ライターと辞書ベースのリーダー/ライターという 2 つの主要なインターフェイスを提供します。 `csv.reader()` と `csv.writer()` は CSV の各行を文字列のリストとして表します。これは単純ですが、数値インデックスによって列を参照する必要があります。より堅牢なアプローチとして、開発者は `csv.DictReader()` および `csv.DictWriter()` を使用します。これらのクラスは、CSV ヘッダー行をキーとして使用して各行を辞書にマップし、列が並べ替えられても壊れない、可読性の高いコードを生成します。

CSV ファイルを扱うときは、構文の詳細が重要です。プログラムが異なれば、異なる区切り文字 (タブやセミコロンなど) が使用され、引用符や行末が異なる方法で処理されます。 「csv」モジュールを使用すると、「方言」パラメータを介してカスタム区切り文字、引用符ルール、およびエスケープ文字を定義できます。さらに、Python で CSV ファイルを開く場合、異なるオペレーティング システム間での空白行の問題を防ぐために、`newline=''` を `open()` 関数に渡すことが重要な要件です。

コードと実行の出力

DictWriter を使用して CSV ファイルにデータを書き込み、DictReader でそれを読み取ります。

import csv

filename = "employees.csv"
fieldnames = ["id", "name", "department"]
data = [
    {"id": "101", "name": "Bob", "department": "HR"},
    {"id": "102", "name": "Alice", "department": "Engineering"}
]

# Write dict data to CSV
with open(filename, "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)

print("CSV written successfully.\n--- Reading CSV ---")

# Read CSV data back as dictionaries
with open(filename, "r", newline="") as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(f"Employee {row['name']} works in {row['department']}.")
端子出力
CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.

段階的な実装

  • 財務分析用のスプレッドシート レコードのエクスポート
  • 連絡先リストのカタログをデータベースにインポートする
  • 計算スクリプトからの統計出力のフォーマット

よくある質問

CSV ファイルを開くときに newline="" を指定する必要があるのはなぜですか?

これは、特に Windows プラットフォームで余分な空白行が挿入されるのを防ぐために、csv モジュールの内部ライターで必要です。

カンマの代わりにタブを使用する CSV ファイルを解析するにはどうすればよいですか?

delimiter パラメータをリーダーまたはライターに渡すことができます (例: csv.reader(file, delimiter='\t'))。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。