簡體   English   中英

使用python修改Json文件的格式

[英]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"])

這是您可以采取的解決問題的步驟。 由於這聽起來像是一項家庭作業,因此我將為您提供邏輯和指針,而不是代碼。

  1. 打開文件進行閱讀
  2. 將文件讀入字符串變量(如果足夠小以限制內存)
  3. 創建用於輸出的空list
  4. .....上分割字符串
  5. json.loads每個結果列表
  6. 將每個結果附加到空的輸出列表中
  7. 喝杯咖啡慶祝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM