Python: jsonな文字列に対してformatメソッドを使う
jsonな文字列に対してformatメソッドを使う方法
pythonでjson形式を含む文字列をformatメソッドを使う場合ちょっと工夫が必要だ。
例えば、以下のような文字列に対してformat
メソッドを使うとエラーが出る
# jsonな文字列 json_str = """\ {'member':'{name}', 'age': 26} """ # formatメソッドで値を指定しようとすると prof = json_str.format(name='john') # エラーが出る --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-44-686c908f6197> in <module>() ----> 1 json_str.format(**{name='john'}) KeyError: "'member'"
これはプレースホルダのkeyとjsonのフォーマットのkeyをformat
メソッドが区別できないかららしい。以下のように文字列中のjson用の{}を二重にしてあげるとエラーは出ない。(深い理由は知らないです。ご存知のかた教えてください)
# jsonな文字列。{}を2重にする json_str = """\ {{'member':'{name}', 'age': 26}} """ prof = json_str.format(name='john') # エラーは出ない。 print(eval(prof)) #> {'age': 26, 'member': 'john'}
json形式の文字列から、eval関数を使ってdict型のデータを生成することはよくあるので知っておくとよい。