Pythonで日本語が含まれるJSONをファイルに書き込む際、可読性を上げるための最低限の設定
概要
PythonにはJSONモジュールを使うと、JSONをファイルに書き込むことが簡単にできます。json.dump()で可能です。
ただ、オプションを何も指定せずにファイルに書き込みを行うと、以下のような状態になります。
- 1行にまとめられた状態で書き込まれる
- 日本語のような非ASCIIコードはエスケープされる
よって、可読性を上げる最低限の設定をする方法を挙げます。
オプション無しでjson.dump()を実行した場合
import json
tags = [{"pref": "北海道", "city": "札幌市"}, {"pref": "東京都", "city": "港区"}]
with open('./test.json', 'w') as f:
json.dump(tags, f)
実行結果
[{"pref": "\u5317\u6d77\u9053", "city": "\u672d\u5e4c\u5e02"}, {"pref": "\u6771\u4eac\u90fd", "city": "\u6e2f\u533a"}]
オプション無しでは「1行、非ASCIIコードはエスケープされる」という結果になります。
なお、エスケープされたJSONはjson.load()で読み込めば、問題なく読み込んでくれます。ただ、問題なく読み込めたとしても、JSONファイルをcatやlessなどで直接参照した場合、人間の目には読みにくい(実質的には読めない)ものです。
with open('./test.json', 'r') as f:
print(json.load(f))
# 結果
[{'pref': '北海道', 'city': '札幌市'}, {'pref': '東京都', 'city': '港区'}]
最低限の設定で可読性を上げる
「インデントを指定、非ASCIIコードをエスケープしない」設定をすることで、可読性の良い形で出力されます。
構文
import json
tags = [{"pref": "北海道", "city": "札幌市"}, {"pref": "東京都", "city": "港区"}]
with open('./test.json', 'w') as f:
json.dump(tags, f, indent=4, ensure_ascii=False)
実行結果
[
{
"pref": "北海道",
"city": "札幌市"
},
{
"pref": "東京都",
"city": "港区"
}
]
json.load()による読み込みも問題ありません。
with open('./test.json', 'r') as f:
print(json.load(f))
# 結果
[
{
"pref": "北海道",
"city": "札幌市"
},
{
"pref": "東京都",
"city": "港区"
}
]
参考
Author And Source
この問題について(Pythonで日本語が含まれるJSONをファイルに書き込む際、可読性を上げるための最低限の設定), 我々は、より多くの情報をここで見つけました https://qiita.com/st10/items/aa0601e07eb73de8c99f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .