在python中将以下数据转换为JSON格式

时间:2014-11-20 17:24:15

标签: python

我有一个包含以下内容的文件,这是由其他一些程序生成的。请注意,每一个都有一个新的行字符。

{'a':1,'b':534}
{'a':4,'b':882}
{'a':2,'b':964}
.
.
so on...

如何将其转换为有效的JSON格式?

上面的内容应该是这样打印的

{
    "Sale": [
        {
            "a": 1,
            "b": 534
        },
        {
            "a": 4,
            "b": 882
        },
        {
            "a": 2,
            "b": 964
        }
    ]
}

我可以在JQuery中做到这一点但是我需要在python中这样做,因为我不擅长python但我需要通过bash脚本使其运行,因此需要将其设置为python脚本。

我将分享jquery解决方案,以防你需要推荐。

result = replaceAll(result,"'","\"");
result = replaceAll(result,"}, {",",");
result = replaceAll(result,"}{","},{"); 
result = replaceAll(result,"}\n{","},{");
result = "{\"Sale\":["+result+"]}";
//alert(result);

replaceAll函数是

function replaceAll(str, find, replace) {
 var i = str.indexOf(find);
 if (i > -1){
   str = str.replace(find, replace); 
   i = i + replace.length;
   var st2 = str.substring(i);
   if(st2.indexOf(find) > -1){
     str = str.substring(0,i) + replaceAll(st2, find, replace);
   }       
 }
 return str;
}

上述工作但我需要一个python替代它。

2 个答案:

答案 0 :(得分:2)

from ast import literal_eval
with open('data.txt') as f:
    sale = [literal_eval(line) for line in f]
    data = {'Sale': sale}
    print(data)

输出

{'Sale': [{'a': 1, 'b': 534}, {'a': 4, 'b': 882}, {'a': 2, 'b': 964}]}

从那里,您可以使用json library以JSON格式将此文件写入文件。

import json
json.dumps(data, indent=4)

答案 1 :(得分:0)

from ast import literal_eval
import json
sale = []
with open(filepath) as f:
    lines = f.read()
    for line in lines:
       sale.append(literal_eval(line))
json.dumps({"sale":sale}, indent=4)