3 回答

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
您的示例輸入json在每一行上顯示一個(gè)對(duì)象。
所以我的解決方案讀取每一行并將其轉(zhuǎn)換為python dict(使用json.loads()),從dict(使用dict.pop()如果鍵不存在靜默失?。┲袆h除所需的鍵并將其轉(zhuǎn)換回字符串(使用json.dumps()),然后將其寫(xiě)入新文件。
import json
infile = "failure.json"
outfile = "failure1.json"
key = '_id'
with open(infile) as f_read:
with open(outfile, 'w') as f_write:
for line in f_read:
line = line.strip()
if len(line) > 0:
try:
elem = json.loads(line)
elem.pop(key, None)
f_write.write('{}\n'.format(json.dumps(elem)))
except json.JSONDecodeError:
pass
編輯:json根據(jù) OP 的評(píng)論,顯然每一行都應(yīng)該進(jìn)入一個(gè)單獨(dú)的新文件??梢赃@樣做,例如:
import json
infile = "failure.json"
key_to_remove = '_id'
with open(infile) as f_read:
for line in f_read:
line = line.strip()
if len(line) > 0:
try:
elem = json.loads(line)
elem.pop(key_to_remove, None)
outfile = '{}.json'.format(elem['name']) # this may raise KeyError
with open(outfile, 'w') as f_write:
f_write.write('{}\n'.format(json.dumps(elem)))
except json.JSONDecodeError:
pass

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
對(duì)于刪除,你可以使用這樣的東西:
import json
import sys
import re
import fileinput
with open('failure.json') as data_file:
data = json.load(data_file)
del data['_id']
with open('failure2.json', 'w') as data_file:
data = json.dump(data, data_file)
并且為了創(chuàng)建具有 id 值的文件,只需解析data對(duì)象和id節(jié)點(diǎn)值

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
您已導(dǎo)入該json
包,但并未使用它。你應(yīng)該,這很棒。
從文件中獲取字符串,然后用于json.loads()
將字符串加載到 json 對(duì)象中。從那里,您可以使用 .json 獲取 json 對(duì)象的每個(gè)元素for key in json_object
。
添加回答
舉報(bào)