如何将没有分隔符的文本文件拆分为python3中的字典列表?

根埃尔南德斯

我有一个文本文件,其中包含以下形状的数据:

{"id": 1, {"device_data": 123}, "created_at": "2020-04-03"}{"id": 2, {"device_data": 123}, "created_at": '2020-04-03'}{"id": 2, {"device_data": 123}, "created_at": "2020-04-03"}{"id": 2, {"device_data": 123}, "created_at": '2020-04-03'}

没有我可以在这里使用的任何\n分隔符或,分隔符。我想将其解析为字典列表,以便将数据加载到数据帧中。

我试过使用.split()和列表理解来解析这个,做这样的事情:

lst = [x + '}' for x in data.split('}') if x != '']

但是对于具有嵌套对象的记录,这显然会中断。

我也试过用正则表达式来做这件事,但我正在努力找出合适的方法。这是我到目前为止:

re.split('(\{(.*)\})', data) 

根据以下建议,我还尝试使用该json库。

with open('path/to/file', 'r') as f:
    res = json.load(f)

但是,这导致了以下消息的错误:JSONDecodeError: Extra data我相信这是因为这个文件中有多个有效的 jsons。

我想在json.load()for 循环中使用该命令,但后来在弄清楚如何正确拆分文件内容时遇到了麻烦。

有没有人对如何解决此类问题有任何建议?

保罗·史密斯

您的记录分隔符是:

}{

如此给予

txt="{'id': 1, {'device_data': 123}, 'created_at': '2020-04-03'}{'id': 2, {'device_data': 123}, 'created_at': '2020-04-03'}{'id': 2, {'device_data': 123}, 'created_at': '2020-04-03'}{'id': 2, {'device_data': 123}, 'created_at': '2020-04-03'}"

拆分为记录:

records=txt.split('}{')

结果如下:

records[0]="{'id': 1, {'device_data': 123}, 'created_at': '2020-04-03'"
records[1]="'id': 2, {'device_data': 123}, 'created_at': '2020-04-03'"

并将记录解析为字典

mydictlist = []
for record in records:
    # clean up excess brackets and tokens
    record = record.replace('{','').replace('}','').replace("'",'')
    mydict = dict((k.strip(), v.strip()) for k,v in
          (item.split(':') for item in record.split(',')))
    mydictlist.append(mydict)

示例结果如下所示:

mydictlist[2] = {'id': '2', 'device_data': '123', 'created_at': '2020-04-03'}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用numpy导入python中没有分隔符的文本文件?

如何在python中编写没有任何分隔符的文本文件?

如何在UNIX中将分隔符上的文本文件拆分为多个文件?

根据分隔符将文本文件拆分为行和列

Powershell通过分隔符将文本文件拆分为页面

在Python中解析没有分隔符的文本文件

如何在python中没有分隔符的情况下解析文本文件

如何从文本文件导入数据而没有任何定界符或分隔符?

使用python拆分行并将分隔符添加到文本文件中

Python - 使用分隔符从文本文件中拆分数据

在 Python 中使用空行作为分隔符将文本文件转换为列表

将带有空格分隔符的文本文件导入python中的csv

R如何将具有多个空间的文本文件拆分为数据框

Python如何将文本文件拆分为段落?

用空行作为唯一的分隔符将文本文件转换为字典

如何在没有换行符的文本文件中按常规(每 13 个)分隔符间隔插入换行符

在python中使用递归根据分隔符拆分文本文件

有没有办法在文本文件的分隔符之间添加字符?

将文本文件拆分为列表列表

使用扫描仪和分隔符将文本文件读入数组列表

将没有分隔符和100+列的4 GB固定列宽文本文件转换为修剪的制表符分隔文件

如何将一个文本文件拆分为多个文本文件

如何将一个文本文件拆分为多个文本文件?

使用python将分隔符添加到文本文件

如何读取带有多个分隔符的文本文件并在熊猫中相应地排列列

如何从带有C#分隔符的文本文件(.txt)中获取特定列

将文本文件读入字典的python列表中

如何导入带有不同空格分隔符的文本文件?

如何读取带有多个分隔符的文本文件?