Help us understand the problem. What is going on with this article?

python2とpython3でjson.dumpsのインデントの挙動が違う

More than 3 years have passed since last update.

python2.7とpython3.6でindentオプションを指定した時のjson.dumpsの挙動が違う。python2だと改行コードの前にスペースが一つはいっているが、python3だとはいっていない。

実験

コード

import json
json.dumps({"name": 'aaa', "age": 21}, sort_keys=True, indent=2)

結果

python2.7.8

'{\n  "age": 21, \n  "name": "aaa"\n}'

python3.6.0

> '{\n  "age": 21,\n  "name": "aaa"\n}'

原因と対応

原因

Issue 16333: Trailing whitespace in json dump when using indent - Python tracker

対策

separators=(',',': ')をjson.dumpsのオプションに追加する。

import json
json.dumps({"name": 'aaa', "age": 21}, sort_keys=True, indent=2, separators=(',', ': '))
abeja
「ディープラーニング」を活用し、多様な業界、シーンにおけるビジネスの効率化・自動化を促進するベンチャー企業です。
https://abejainc.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away