如何将已解析的JSON矩阵转换为列表列表?

时间:2019-12-13 05:35:17

标签: python arrays json matrix

当前数据如下:

a:5:{s:1:0";a:4:{s:1:"1";s:2:"59";s:1:"2";s:2:"59";s:1:"3";s:2:"59";s:1:"4";s:2:"59";}s:1:"1";a:4:{s:1:"1";s:2:"75";s:1:"2";s:2:"75";s:1:"3";s:2:"75";s:1:"4";s:2:"75";}s:1:"2";a:4:{s:1:"1";s:2:"51";s:1:"2";s:2:"51";s:1:"3";s:2:"51";s:1:"4";s:2:"51";}s:1:"3";a:4:{s:1:"1";s:2:"74";s:1:"2";s:2:"74";s:1:"3";s:2:"74";s:1:"4";s:2:"74";}s:1:"4";a:4:{s:1:"1";s:2:"51";s:1:"2";s:2:"51";s:1:"3";s:2:"51";s:1:"4";s:2:"51";}}"

我需要的列表列表是:

[[59,59,59,59],[75,75,75,75],[51,51,51,51],[74,74,74,74],[51,51,51,51]]

很抱歉,如果这个问题不是很有帮助。我正在努力寻找从哪里开始。

1 个答案:

答案 0 :(得分:1)

如果数据是字符串,则可以使用列表推导来提取所需的输出

>>> mystring = """a:5:{s:1:"0";a:4:{s:1:"1";s:2:"59";s:1:"2";s:2:"59";s:1:"3";s:2:"59";s:1:"4";s:2:"59";}s:1:"1";a:4:{s:1:"1";s:2:"75";s:1:"2";s:2:"75";s:1:"3";s:2:"75";s:1:"4";s:2:"75";}s:1:"2";a:4:{s:1:"1";s:2:"51";s:1:"2";s:2:"51";s:1:"3";s:2:"51";s:1:"4";s:2:"51";}s:1:"3";a:4:{s:1:"1";s:2:"74";s:1:"2";s:2:"74";s:1:"3";s:2:"74";s:1:"4";s:2:"74";}s:1:"4";a:4:{s:1:"1";s:2:"51";s:1:"2";s:2:"51";s:1:"3";s:2:"51";s:1:"4";s:2:"51";}}"""

>>> [[int(y.split(':')[2].strip('"')) for y in x.split(';')[1::2]]for x in [z.split('}')[0] for z in mystring.split('{') if '}' in z]]

[[59, 59, 59, 59], [75, 75, 75, 75], [51, 51, 51, 51], [74, 74, 74, 74], [51, 51, 51, 51]]