前提・実現したいこと
Pythonで要素数の決まっていない辞書型のデータをfor文を使ってループ処理を行いJSON形式で書き出しする処理をしたい
発生している問題・エラーメッセージ
書き出しを行ったJSONファイルですが以下のように、不要なダブルクォーテーションやバックスラッシュが入ってしまいます。
"{\ "0\":{\"begin\":\"2018/11/17 00:00\",\"end\":\"2018/11/17 00:00\",\"event\":\"イベント1\"}}, ""{\"1\":{\"begin\":\"2019/09/07 00:00\",\"end\":\"2019/09/07 00:00\",\"event\":\"イベント2\"}},"
該当のソースコード
Python3
1with open('mydash.json', mode="w") as q: 2 for num in range(num_lines): 3 json.dump('''{{"{0}":{{"begin":"{1}","end":"{2}","event":"{3}"}}}},'''.format(num,k[num].begin.format('YYYY/MM/DD HH:mm'),k[num].begin.format('YYYY/MM/DD HH:mm'),k[num].name),q,ensure_ascii=False)
試したこと
処理を記述して確認している際には以下の記述で表示上は問題ありませんでした。
Python3
1print({{"{0}":{{"begin":"{1}","end":"{2}","event":"{3}"}}}}.format(num,k[num].begin.format('YYYY/MM/DD HH:mm'),k[num].begin.format('YYYY/MM/DD HH:mm'),k[num].name,))
Python3
1{"0":{"begin":"2018/11/17 00:00","end":"2018/11/17 00:00","event":"イベント1"}}, 2{"1":{"begin":"2019/09/07 00:00","end":"2019/09/07 00:00","event":"イベント2"}},
以下のように記述を変更しましたが
Python3
1json.dump({{"{0}":{{"begin":"{1}","end":"{2}","event":"{3}"}}}}.format(num,k[num].begin.format('YYYY/MM/DD HH:mm'),k[num].begin.format('YYYY/MM/DD HH:mm'),k[num].name,),q,ensure_ascii=False)
以下のようなエラーが出てしまいました。
Python3
1TypeError: unhashable type: 'dict'
補足情報(FW/ツールのバージョンなど)
MacOS Mojave
Python Python 3.7.0

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/27 21:40