Pythonでjsonの読み込み、文字列変換
JSONは、JavaScriptObjectNotation(JSON)というデータ交換フォーマット。PythonでJSONデータを扱うためのツールとしてjsonモジュールが提供されています。
jsonモジュールを使うと、load/dump関数でJSONファイルの読み書きや、JSON文字列の変換を行うことができます。
公開APIなんかも、レスポンスをJSON形式で返すことも多く、PythonでJSONを使う機会は多いんですね。
JSONデータの読み書き
loads()とdumps()関数を使うことで、JSON形式のデータを含む文字列のエンコード/デコードを行うことが可能です。
PythonでテキストデータをJSON形式として読み込むには、以下のようにします。テキスト形式をloads関数でJSON形式に変換しているんですね。ダブルクォート3つで囲った部分は、JSON形式のテキストファイルを読み込んで変数に入れたときのイメージになります。
import json
json_string = """
{
"name": "John Doe",
"age": 30,
"address": "123 Main Street, Anytown, CA 91234"
}
"""
data = json.loads(json_string)
print(data)
import json data = { "name": "John Doe", "age": 30, "address": "123 Main Street, Anytown, CA 91234" } json_string = json.dumps(data, indent=4) print(json_string)
いずれのサンプルも、実行すると以下のように表示されます。
{ "name": "John Doe", "age": 30, "address": "123 Main Street, Anytown, CA 91234" }
JSONデータとテキストデータの変換は、json.loads、json.dumpsを使うという点を覚えておきましょう。
Pythonのファイル入出力に関する入門
では、テキストファイルを読み込んでPython内部でJSON形式データとして保持したり、JSON形式データをテキストとして出力するには?
テキストファイルからの読み込みサンプルはこう。ファイルdata.jsonからデータを読み込んで、内部でJSON形式の変数dataに格納します。
import json
with open("data.json") as f:
data = json.load(f)
print(data)
import json
data = {
"name": "John Doe",
"age": 30,
"address": "123 Main Street, Anytown, CA 91234"
}
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
テキストファイルからJSONを読み込むと、Pythonオブジェクトに変換されます。テキストファイルにJSONを書き込むと、PythonオブジェクトがJSONに変換されてファイルに書き込まれます。
PythonでJSONからCSVに変換するサンプル
JSONデータはちょくちょくCSVファイルに変換したいケースがあります。以下は、テキストファイルを読み込んでPython内部でJSON形式データとして保持し、CSV形式でテキストファイルに出力するサンプルです。
import csv
with open("data.json") as f:
data = json.load(f)
with open("data.csv", "w") as f:
writer = csv.writer(f)
writer.writerow(data.keys())
writer.writerows(zip(*data.values()))
name,age,address
John Doe,30,123 Main Street, Anytown, CA 91234
関連)PythonのCSV作成