我是Python的初学者。
我有一个基本上是子列表列表的文件。每个子列表由4个元素组成,我需要将其转换为以下格式的JSON对象:子列表[1,2,3,4]的每个元素都必须以四个键作为前缀(Col1,Col2,Col3 ,Col4),即第一个元素的前缀为Col1,第二个元素的前缀为Col2,第三个元素的前缀为Col3,第四个元素的前缀为Col4。
现在,循环将读取下一个子列表,并以类似的方式为这些列加上第二个子列表元素的元素,以此类推,直到列表不结束。
以下是文件的外观:
[[2004732899,96,0,1],[2004732917,96,1,1],[2004732949,96,2, 1],[2004732967、96、3、1],[2004733201、96、4、1],[2004733215、96, 5,1],[2004733251,96,6,1],[2004733265,96,7,1],[2004733399, 96,8,1],[2004733417,96,9,1] .....]
需要以下内容:
{
{
'Col1':2004732899,
'Col2':96,
'Col3':0,
'Col4':1
}
{
'Col1':2004732917,
'Col2':96,
'Col3':1,
'Col4':1
}
{
'Col1':2004732949,
'Col2':96,
'Col3':2,
'Col4':1
}
.....
}
我一直在搜索JSON解码器。 JSON转储,但找不到合适的方法来执行此操作。
任何帮助都是很大的帮助。
答案 0 :(得分:0)
您所需的输出不是有效的JSON,因为不是外部列表'[',而是外部字典'{'在这种情况下无效,因为外部列表中有字典列表,而不是键/值对。
由于文件输入为有效JSON,因此您可以从文件中load()
进行输入,它将文件中的字符串转换为列表。然后,您使用dumps()
将列表转换为您要的内容:
>>> import json
>>> with open('/tmp/listsublists') as f:
... a = json.load(f) # This just converts the string into a list
...
>>> json.dumps([{"Col1": b[0], "Col2": b[1], "Col3": b[2], "Col3": b[3]} for b in a])
这会打印一个包含以下内容的JSON字符串(我在此处格式化了JSON):
[
{
"Col1":2004732899,
"Col2":96,
"Col3":0,
"Col4":1
},
{
"Col1":2004732917,
"Col2":96,
"Col3":1,
"Col4":1
},
{
"Col1":2004732949,
"Col2":96,
"Col3":2,
"Col4":1
}
]