本文目錄一覽:
- 1、請教一個關於python處理json的問題
- 2、python調用json後關閉程序會清空json文件怎麼改?
- 3、python如何修改JSON文件中的某個key值?
- 4、Python如何修改JSON里的內容?
請教一個關於python處理json的問題
{
data : {
{
tg_i”:” 1080723 “,
contest_i” : “1001”,
sid : “1567515287”
},
{
tg_id : “1080723”,
contest_id : “1001”,
sid : “1567515287”
}
},
total : “2”
}
然後經過修改,變成:
?
1
{“data”:{{“tg_i”:”1080723″,”contest_i”:”1001″,”sid”:”1567515287″},{“tg_id”:”1080723″,”contest_id”:”1001″,”sid”:”1567515287″}},”total”:”2″}
格式化為:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
{
“data” : { {
“tg_i” : “1080723”,
“contest_i” : “1001”,
“sid” : “1567515287”
}, {
“tg_id” : “1080723”,
“contest_id” : “1001”,
“sid” : “1567515287”
}
},
“total” : “2”
}
但是,去用json解析,但是出錯:
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type “copyright”, “credits” or “license()” for more information.
import json
json.loads(‘{“data”:{{“tg_i”:”1080723″,”contest_i”:”1001″,”sid”:”1567515287″},{“tg_id”:”1080723″,”contest_id”:”1001″,”sid”:”1567515287″}},”total”:”2″}’)
Traceback (most recent call last):
File “pyshell#2”, line 1, in module
json.loads(‘{“data”:{{“tg_i”:”1080723″,”contest_i”:”1001″,”sid”:”1567515287″},{“tg_id”:”1080723″,”contest_id”:”1001″,”sid”:”1567515287″}},”total”:”2″}’)
File “D:\tmp\dev_install_root\Python27_x64\lib\json\__init__.py”, line 326, in loads
return _default_decoder.decode(s)
File “D:\tmp\dev_install_root\Python27_x64\lib\json\decoder.py”, line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File “D:\tmp\dev_install_root\Python27_x64\lib\json\decoder.py”, line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 9 (char 9)
【折騰過程】
1.剛開始,看了看:
{“data”:{{“tg_i”:”1080723″,”contest_i”:”1001″,”sid”:”1567515287″},{“tg_id”:”1080723″,”contest_id”:”1001″,”sid”:”1567515287″}},”total”:”2″}
好像也都是正常的,沒什麼錯誤。
2.後來才發現,對應着錯誤的位置:
column 9
是大括號'{‘
對應着,格式化的結果中的:
“data” : { {
中的第一個大括號
然後才發現,原來是,data鍵的值,此處寫成用大括號括起來的:
?
1
2
3
4
5
6
7
8
9
10
“data” : { {
“tg_i” : “1080723”,
“contest_i” : “1001”,
“sid” : “1567515287”
}, {
“tg_id” : “1080723”,
“contest_id” : “1001”,
“sid” : “1567515287”
}
},
但是,實際上,data的值,只是兩個dict,所以,應該是:
要麼改為list:
?
1
2
3
4
5
6
7
8
9
10
“data” : [{
“tg_i” : “1080723”,
“contest_i” : “1001”,
“sid” : “1567515287”
}, {
“tg_id” : “1080723”,
“contest_id” : “1001”,
“sid” : “1567515287”
}
],
要麼改為dict:
?
1
2
3
4
5
6
7
8
9
10
“data1” : {
“tg_i” : “1080723”,
“contest_i” : “1001”,
“sid” : “1567515287”
},
“data2” : {
“tg_id” : “1080723”,
“contest_id” : “1001”,
“sid” : “1567515287”
},
對應着,非格式化的內容就是:
?
1
{“data”:[{“tg_i”:”1080723″,”contest_i”:”1001″,”sid”:”1567515287″},{“tg_id”:”1080723″,”contest_id”:”1001″,”sid”:”1567515287″}],”total”:”2″}
和:
?
1
{“data1”:{“tg_i”:”1080723″,”contest_i”:”1001″,”sid”:”1567515287″}, “data2”:{“tg_id”:”1080723″,”contest_id”:”1001″,”sid”:”1567515287″},”total”:”2″}
這樣才可以正常解析:
json.loads(‘{“data”:[{“tg_i”:”1080723″,”contest_i”:”1001″,”sid”:”1567515287″},{“tg_id”:”1080723″,”contest_id”:”1001″,”sid”:”1567515287″}],”total”:”2″}’)
{u’total’: u’2′, u’data’: [{u’sid’: u’1567515287′, u’contest_i’: u’1001′, u’tg_i’: u’1080723′}, {u’tg_id’: u’1080723′, u’contest_id’: u’1001′, u’sid’: u’1567515287′}]}
json.loads(‘{“data1”:{“tg_i”:”1080723″,”contest_i”:”1001″,”sid”:”1567515287″}, “data2”:{“tg_id”:”1080723″,”contest_id”:”1001″,”sid”:”1567515287″},”total”:”2″}’)
{u’total’: u’2′, u’data1′: {u’sid’: u’1567515287′, u’contest_i’: u’1001′, u’tg_i’: u’1080723′}, u’data2′: {u’tg_id’: u’1080723′, u’contest_id’: u’1001′, u’sid’: u’1567515287′}}
【總結】
折騰json的話,前提要了解json的語法和規則。
其次才是用某種語言去處理json。
python調用json後關閉程序會清空json文件怎麼改?
一、代碼不用百修改:
二、user_info.json 文件的內容需要度修改。問
修改有多種方式,需要根據你的實際答需求內來確定,以下提供兩種參容考:
1、單一 json 數組
[“yuri”, “yuki”, “yuri”]
2、鍵值對數組
{
“name”: [“yuri”, “yuki”, “yuri”]
}
三、實際運行驗證
python如何修改JSON文件中的某個key值?
with open(‘test.json’, ‘r’) as fr: # 文件路徑自己改成完整的
json_all = json.load(fr)
json_all[‘data1’][‘xxx’] = “yyy”
json_all[‘data2’][‘aaa’] = “bbb”
with open(file, ‘w+’) as fw:
json.dump(json_all, fw, ensure_ascii=False, indent=4)
Python如何修改JSON里的內容?
可以首先使用json包的loads函數對json數據進行解析,然後就可以像操作Python數據格式一樣對數據進行索引和遍歷了。
import json
s = ‘{“aescCityList”:null,”cityAllList”:null,”cityJsonArray”…’
data = json.loads(s)
for city in data[“cityJsonArray”]:
if city[“cityId”] == 4:
print city
原創文章,作者:YOZO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/147130.html