![](/img/trans.png)
[英]How to modify a JSON file using Python without losing comments in the file
[英]Using python to modify format of Json file
我有這樣格式化的JSON文件:(為清晰起見,多行顯示)
(0001行).......
{
"_id": "iD_0001",
"skills": [{
"name": "Project Management"
}, {
"name": "Business Development"
}]
}
....(9999行)
{
"_id":"iD_9999",
"skills": [{
"name": "Negotiation"
}, {
"name": "Banking"
}]
}
我想在上面運行一個程序,但是該程序無法以上述格式讀取它。 因此,我想將其格式修改為:
[{
"_id": "iD_0001",
"skills": [{
"name": "Project Management"
}, {
"name": "Business Development"
}]
},{
"_id":"iD_9999",
"skills": [{
"name": "Negotiation"
}, {
"name": "Banking"
}]
}]
本質上,將所有條目放在單個數組中。 有沒有一種方法可以使用Python或demjson來實現?
替代:我編寫了一個程序來獲取這些json文件中的技能並將其發送到文本文件(Test.txt),但是該程序僅適用於第二種格式,不適用於第一種格式。 您能否建議修改使其適用於第一種格式(上述)? 這是我的程序:
import json
from pprint import pprint
with open('Sample.json') as data_file:
data = json.load(data_file)
with open('Test.txt', 'w') as f:
for x in data:
for y in x["skills"]:
f.write(y["name"])
f.close()
解
感謝Antti Haapala注意第一種格式下的Json對象的分類,以及Walter Witzel和Josh J提出的替代答案。 由於第一格式是個體對象的連環,程序運行良好,如果我們加載第一個JSON文件行由行 ,而不是作為一個整體。 我已經做到了:
data = []
with open('Sample1-candidats.json') as data_file:
for line in data_file:
data.append(json.loads(line))
with open('Test.txt', 'w') as f:
for x in data:
for y in x["skills"]:
f.write(y["name"])
f.close()
來了 這假設您的文件只是一堆串聯的單個json對象,並且您需要在json對象列表中進行轉換。
import json
from pprint import pprint
with open('sample.json') as data_file:
strData = '[' + ''.join(data_file.readlines()).replace('}\n{','},{') + ']'
data = eval(strData)
with open('Test.txt', 'w') as f:
for x in data:
for y in x["skills"]:
f.write(y["name"])
這是您可以采取的解決問題的步驟。 由於這聽起來像是一項家庭作業,因此我將為您提供邏輯和指針,而不是代碼。
list
.....
上分割字符串 json.loads
每個結果列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.