如何将以空行分隔数据的文本文件转换为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
相关产品推荐
相关产品推荐

