如何使用 Python 从没有换行符的文本文件中提取多个词典?

问题描述 投票:0回答:1

我有一个包含以下类型数据的文本文件:

{'key1':'data','key2':'data','key3':'data','key4':{'subkey1':'data','subkey2':'data'}, { 'key1':'data','key2':'data','key3':'data','key4':{'subkey1':'data','subkey2':'data'}, {'key1':'data','key2':'data','key3':'data','key4':{'subkey1':'data','subkey2':'data'}

请注意引号 ('') 也出现在文本文件中。每个字典都用逗号分隔,没有换行符( ) 在文件中。

我想从文本文件中提取这些作为字典列表。

我是 Python 的新手,尽管使用 readlines() 函数将整个文本文件作为单个变量读取,然后使用正则表达式的模式匹配将它们分开。

我无法找出使用正则表达式的可靠模式。

最终,它应该看起来像这样:

extracted_list = [{'key1':'data','key2':'data','key3':'data','key4':{'subkey1':'data','subkey2':'data'}, {'key1':'data','key2':'data','key3':'data','key4':{'subkey1':'data','subkey2':'data'},
{'key1':'data','key2':'data','key3':'data','key4':{'subkey1':'data','subkey2':'data'}]

for dict in extracted_list:
   for key,value in dict:
      print(dict['key1']     #should print 'data under key1'
      print(dict['key4']     #should print 'sub-dictionary under key4'
python-3.x regex list dictionary file-io
1个回答
0
投票

此代码读取文本文件的内容,将所有单引号替换为双引号,并在字典之间添加逗号以确保输入数据为有效的JSON 格式。然后它将数据包装在方括号中以创建一个 JSON 数组,并使用 ast.literal_eval() 将 JSON 数据安全地评估为 Python 字典列表。

import ast

with open('file.txt', 'r') as f:
    data = f.read().replace("'", "\"").replace("}{", "},{") 
    # replace single quotes with double quotes and add commas between dictionaries

extracted_list = ast.literal_eval("[" + data + "]")

for d in extracted_list:
    print(d['key1'])
    print(d['key4'])
© www.soinside.com 2019 - 2024. All rights reserved.