You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python从无换行的文本文件中提取多个字典

提取文本文件中的字典列表(Python实现)

我有一个文本文件,里面的数据格式如下(文件内使用单引号,字典之间以逗号分隔,且没有换行符):

{'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 item in extracted_list:
      print(item['key1'])     # 输出key1对应的数据
      print(item['key4'])     # 输出key4对应的子字典

推荐方法:使用ast.literal_eval()

正则表达式处理嵌套字典很容易出错,Python标准库的ast模块可以安全解析字符串形式的Python字面量,完美适配这种场景。步骤如下:

  1. 用read()直接读取文件全部内容(因为文件无换行,readlines()没必要);
  2. 给内容包裹列表方括号,让它变成合法的列表字面量字符串;
  3. 用ast.literal_eval()解析成Python字典列表。

代码示例:

import ast

# 读取文件内容
with open('your_file.txt', 'r', encoding='utf-8') as f:
    content = f.read().strip()

# 包裹成列表格式,避免手动拆分逗号的麻烦
list_str = f"[{content}]"
# 解析为字典列表
extracted_list = ast.literal_eval(list_str)

# 验证效果
for item in extracted_list:
    print(item['key1'])
    print(item['key4'])

这个方法能正确处理嵌套结构、字符串中的特殊字符,比正则稳定得多,而且无需额外安装依赖。

备选方法:转JSON格式解析

如果数据里的字符串不包含双引号,也可以把单引号替换为双引号,转成JSON格式后解析:

import json

with open('your_file.txt', 'r', encoding='utf-8') as f:
    content = f.read().strip()

# 替换单引号为双引号,注意:如果字符串本身含双引号会失效
json_str = f"[{content}]".replace("'", '"')
extracted_list = json.loads(json_str)

# 验证
for item in extracted_list:
    print(item['key1'])
    print(item['key4'])

注意:如果数据存在混合引号(比如{'key':"value"}),这个方法会报错,所以优先用ast.literal_eval()。


内容的提问来源于stack exchange,提问作者Parikshit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 23:02:31