前提・実現したいこと
Pythonからjsonファイルへテキストの書き込みをしているのですが、思い通りいきません。
角括弧が必要ないところに入ってしまいます。
以下が実現したいことです
{ "mid": 1, "mid": 2, [ "mail", "password" ] "mid": 1 }
追記
以下の別のプログラムで使用する際に不便なので、今回このような質問をさせていただきました。
fin = open('loginmid.txt') loginmid = fin.read() fin.close() f=codecs.open('loginsetting.json','r','utf-8') loginsetting = json.load(f) loset = loginsetting[loginmid] if loset == 1: pass if loset == 2: pass if loset == 3: pass
発生している問題・現状
"mid": 1, "mid": [ 2, [ "mail", "password" ] ], "mid": 1,
該当のソースコード
f=codecs.open('loginsetting.json','r','utf-8') loginsetting = json.load(f) sender = mid msg.text = "2 mail password" zz = msg.text.replace("2 ","") ll = zz.split(" ") loginsetting[sender] = 2,ll f=codecs.open('loginsetting.json','w','utf-8') json.dump(loginsetting, f, sort_keys=True, indent=4,ensure_ascii=False)
どなたか、原因の分かる方いらっしゃればご教授お願いします
その後。。。
回答をいただき、二通りのことを考えました。
まず、jsonへの記載の仕方を変える方法です。
こちら試して見たところ、文字列とリストを合わせることができずエラーが発生しました。
エラー
[ ERROR ] list indices must be integers or slices, not str
理想
{ "mid":{ "number": 1 } "mid":{ "number": 2, "mail": "mail", "password": "password" } "mid":{ "number": 1 } }
該当のソースコード
f=codecs.open('loginsetting.json','r','utf-8') loginsetting = json.load(f) sender = mid msg.text = "2 mail password" zz = msg.text.replace("2 ","") ll = zz.split(" ") mail = ll[0] pas = ll[1] loginsetting[sender]["number"] = 2 loginsetting[sender]["mail"] = mail loginsetting[sender]["password"] = pas f=codecs.open('loginsetting.json','w','utf-8') json.dump(loginsetting, f, sort_keys=True, indent=4,ensure_ascii=False)
そして次に回答に頂いた、現在に相応した判定方法に変えるやり方です
loset値が2だった場合の判定方法を分からず、悩んでおります。
loginsetting
1{ 2 "mid1": 1, 3 "mid2": [ 4 2, 5 [ 6 "mail", 7 "password" 8 ] 9 ], 10 "mid3": 1, 11 "mid4": 1 12}
loginmid
1mid2
fin = open('loginmid.txt') loginmid = fin.read() fin.close() f=codecs.open('loginsetting.json','r','utf-8') loginsetting = json.load(f) print(loginsetting[loginmid]) if loginsetting[loginmid] == 1: pass if loginsetting[loginmid] == 2: pass if loginsetting[loginmid] == 3: pass
回答2件
あなたの回答
tips
プレビュー