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=(',', ': '))