将列表列表转换为JSON对象

时间:2018-07-02 22:52:34

标签: python-3.x

我是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转储,但找不到合适的方法来执行此操作。
任何帮助都是很大的帮助。

1 个答案:

答案 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
   }
]