しごと自動化レシピ

WORK RECIPE Python

PythonでCSVの文字列IDを保持してJSONへ変換する

CSVをJSONへ渡すときに、先頭ゼロのあるIDを失わない変換を作ります。列名を検査し、全項目を文字列として保持した確認用JSONを新規出力する手順です。

掲載コード実行確認

確認日時:2026-10-17T07:36:11.573547+00:00

確認環境:{"os": "Windows", "os_release": "11", "python": "3.14.2", "launch_flags": ["-I", "-X", "utf8"]}

確認した範囲

  • 記事の入力例と期待結果を照合
  • 元入力のバイト列が不変
  • 同じ出力先への再実行を拒否し既存出力を保全

未確認・対象外

  • 実業務データ
  • 他OS・他Python版

実機での処理結果の確認と、記事の全画面操作の確認は別です。実行確認の記録(JSON)で確認結果と原稿のSHA-256を参照できます。

できあがるもの

2要素の配列をJSON出力し、idは文字列001と002を保持する想定。CSVの入力行の妥当性全般を保証する検査ではない。確認環境と範囲は本記事の実行確認欄を参照してください。

始める前に

  • Python 3.11以降の実行環境。標準ライブラリだけを使い、追加パッケージや外部APIは不要。python --versionで起動を確認する。
  • 新しいローカル検証フォルダに架空の入力だけを置く。本番の共有フォルダや同期フォルダで実行しない。
入力例

records.csvをUTF-8で作る。本文はid,name\n001,鉛筆\n002,ノート。データは架空の商品名のみ。

手順

  1. 検証フォルダにrecords.csvを作り、ヘッダーがid,nameの2列で順序も一致しているか確認する。records.jsonがない状態にする。CSVの数量や金額を数値へ変える処理は今回含めない。
  2. 同じ検証フォルダへrecipe.pyをUTF-8で保存し、次のコードをコピーする。入力名が合うか確認し、出力ファイルが必要な手順では未作成の名前を使う。 ```python import csv import json from pathlib import Path with Path('records.csv').open(encoding='utf-8-sig', newline='') as source: reader = csv.DictReader(source, strict=True) if reader.fieldnames != ['id', 'name']: raise ValueError('headers must be id,name') rows = list(reader) if any(None in row or None in row.values() for row in rows): raise ValueError('column count mismatch') with Path('records.json').open('x', encoding='utf-8') as output: json.dump(rows, output, ensure_ascii=False, indent=2) print('rows:', len(rows)) ```
  3. ターミナルをその検証フォルダで開き、python recipe.pyを実行する。入力は読み取り専用で扱う。エラー時は元データを編集せず、表示されたファイル名や入力形式を確認して停止する。
  4. records.jsonをテキストエディタで開き、idが"001"と"002"であることと日本語が保持されたことを確認する。さらに入力の列を1つ増やした別サンプルでは停止するか試す。元CSVはExcelで開き直して再保存しない。

期待結果と照合する

2要素の配列をJSON出力し、idは文字列001と002を保持する想定。CSVの入力行の妥当性全般を保証する検査ではない。確認環境と範囲は本記事の実行確認欄を参照してください。

まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。

うまくいかないとき

  • DictReaderのままでは重複ヘッダーを見逃す場合があるため、この例は列名の完全一致で制限する。
  • JSON出力を受け取る側がIDを数値へ変換すると先頭ゼロは失われる。下流の型も合わせる。

止める・元に戻す

生成したrecords.jsonだけを削除する。入力CSVを残せば同じ変換を別名の出力へ再実行できる。

公式資料・対応範囲

参照日:2026-10-17。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。

同じツールで試す

Pythonの記事一覧へ →