将可变嵌套列表的大文件转换为JSON

A.布拉格

背景

我正在寻找将约1.1m列表的文本文件转换为JSON,然后转换为熊猫数据框。当前已设置文件,以使每个列表仅由换行符分隔,并以以下方式进行结构化:

['Here is a string!', 'London, England', [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96], [-2.61, 50.92]], 'FakeUserName', 1234567, [('581294', 'Other_user')]]

问题

我想将每个列表转换为JSON,然后写入新文件,然后可以在对的单独调用中使用它pd.read_json由于提到元素的长度可变(提到元组的数量没有限制),我遇到了困难。理想情况下,结果数据框将包含以下列:

+-----+--------------------+-----------------------+----------------+------------+---------+--------------------------+
|     |       String       |          LOC          |       BB       |   User     |   ID    |         Mentions         |
+-----+--------------------+-----------------------+----------------+------------+---------+--------------------------+
|   0 | "Here is a string" | ('London', 'England') | [[-2.68..],..] | 'FakeUser' | 1234567 | [(581294, 'other_user')] |
|   1 |                    |                       |                |            |         |                          |
| ... |                    |                       |                |            |         |                          |
+-----+--------------------+-----------------------+----------------+------------+---------+--------------------------+

到目前为止的工作

对我错过的事情有什么建议吗?事实证明,这比我最初设想的要困难得多。

编辑

在表中添加了示例列表,以演示我正在尝试执行的操作。

Serge Ballesta

如果我正确理解了您的问题,则通过json传递只会增加复杂性。

DataFrame构造函数应该足够了:

with open('file.txt') as fd:
    df = pd.DataFrame(columns=['String', 'LOC', 'BB', 'User', 'ID', 'Mentions'],
                      data = [ast.literal_eval(line) for line in fd])

重复您的样本4次,我得到:

              String              LOC                                                 BB          User       ID                Mentions
0  Here is a string!  London, England  [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96...  FakeUserName  1234567  [(581294, Other_user)]
1  Here is a string!  London, England  [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96...  FakeUserName  1234567  [(581294, Other_user)]
2  Here is a string!  London, England  [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96...  FakeUserName  1234567  [(581294, Other_user)]
3  Here is a string!  London, England  [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96...  FakeUserName  1234567  [(581294, Other_user)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章