我有一个红移集群的数据。 前4列用“|”分隔,然后2列是JSON。在
XXX|ABANDONED|1197|11|"{""currency"":""EUR"" item_id"":""143"" type"":""FLIGHT"" name"":""PAR-FEZ"" price"":1111 origin"":""PAR"" destination"":""FEZ"" merchant"":""GOV"" flight_type"":""OW"" flight_segment"":[{ origin"":""ORY"" destination"":""FEZ"" departure_date_time"":""2015-08-02T07:20"" arrival_date_time"":""2015-08-02T09:05"" carrier"":""AT"" f_class"":""ECONOMY""}]}"|"{""type"":""FLIGHT"" name"":""FI_ORY-OUD"" item_id"":""FLIGHT"" currency"":""EUR"" price"":111 origin"":""ORY"" destination"":""OUD"" flight_type"":""OW"" flight_segment"":[{""origin"":""ORY"" destination"":""OUD"" departure_date_time"":""2015-08-02T13:55"" arrival_date_time"":""2015-08-02T15:30"" flight_number"":""AT625"" carrier"":""AT"" f_class"":""ECONOMIC_DISCOUNTED""}]}"
在Python2.7中工作希望分离出JSON值并将其转换为Pandas数据帧,但我对pyparsing没有经验。在
我的方法是以Pandas数据帧的形式读入该文件,并以“|”作为分隔符,然后使用“JSON_normalise”将包含JSON的列展平,但JSON_normalise不会索引panda的列
我已经发现了解决方案here和{a2},但其中一个不适合我的“混合数据”,另一个则是对于一个相当大的JSON文件过于简单化
关于如何在这些数据上部署Pyparsing的任何提示都将非常有用。 谢谢
Pyparsing: Parsing semi-JSON nested plaintext data to a list
将上面的输入字符串作为一个名为'data'的变量,这个Python+pyparsing代码可以理解它。不幸的是,第四个“|”右边的东西并不是真正的JSON。幸运的是,它的格式非常好,可以在没有过度不适的情况下进行解析。请参阅下面程序中嵌入的注释:
现在将该解析器应用于您的“数据”:
^{pr2}$给出:
注意,不是字符串的值(整数、时间戳等)已经转换为Python类型。由于字段名称保存为dict键,因此可以按名称访问字段,如中所示:
相关问题 更多 >
编程相关推荐