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

如何将以空行分隔数据的文本文件转换为Python字典

处理空行分隔文本为嵌套Python字典

需要将以下空行分隔的文本文件内容,转换为嵌套Python字典:顶层键是每个块的首行(如John),每个顶层键对应子字典,子字典的键值对为块内后续行。

原始文本内容:

John
City: New york
Job: surgeon
Happy: no

Terry
City: Miami
House: Yes
Job: nurse
Married: No

Joe
City: LA
Married: No
Job: None

你当前的代码未处理空行,也未区分不同数据块,无法生成嵌套结构。以下是修正后的代码:

with open('file.txt', 'r') as file:
    result = {}
    current_name = None
    current_dict = {}
    
    for line in file:
        line = line.strip()
        if not line:  # 遇到空行,保存当前块并重置
            if current_name:
                result[current_name] = current_dict
                current_dict = {}
                current_name = None
            continue
        
        if not current_name:  # 块的第一行作为顶层键
            current_name = line
        else:  # 拆分后续行的键值对存入子字典
            key, value = line.split(': ', 1)
            current_dict[key.strip()] = value.strip()
    
    # 处理文件末尾无空行的情况,保存最后一个块
    if current_name:
        result[current_name] = current_dict

print(result)

代码逻辑说明:

  • 用current_name记录当前数据块的名称,current_dict存储该块的键值对
  • 遍历每行时先去除首尾空白,空行触发当前块的保存与变量重置
  • 非空行中,第一行作为顶层键,后续行拆分后存入子字典
  • 最后检查并保存文件末尾的最后一个数据块

运行后将输出符合预期的嵌套字典:

{
    "John": {
        "City": "New york",
        "Job": "surgeon",
        "Happy": "no"
    }, 
    "Terry": {
        "City": "Miami",
        "House": "Yes",
        "Job": "nurse",
        "Married": "No"
    },   
    "Joe": {
        "City": "LA",
        "Married": "No",
        "Job": "None"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:25:24