使用python修改Json文件的格式

时间:2016-03-14 17:18:12

标签: python arrays json python-import

我有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()

2 个答案:

答案 0 :(得分:0)

在这里。这假设您的文件只是一堆连接的单个json对象,您需要在json对象列表中进行转换。

default:
    autoload: %paths.base%/app/features/bootstrap
    suites:
        default:
            paths:
                - %paths.base%/app/features

答案 1 :(得分:0)

以下是您可以采取的步骤来完成您的问题。因为它听起来像家庭作业,我会给你逻辑和指针,但不是代码。

  1. 打开文件进行阅读
  2. 将文件读入字符串变量(如果内存限制足够小)
  3. 为输出
  4. 创建空list
  5. .....
  6. 上拆分字符串
  7. json.loads每个结果列表
  8. 将每个结果附加到空输出列表
  9. 喝杯咖啡庆祝