我有一个包含以下内容的文件,这是由其他一些程序生成的。请注意,每一个都有一个新的行字符。
{'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替代它。
答案 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)