Python如何将写入文件的列表嵌套字典恢复为原字典数据类型?
问题原因
你直接将Python对象通过str()转换为字符串写入文件,这类字符串仅保留了人类可读的展示格式,没有保留数据结构的类型信息,读取后只能得到普通字符串,无法直接作为列表/字典操作。
解决方案
方案1:使用ast.literal_eval解析现有文件内容
该方法可以直接把符合Python字面量格式的字符串转换为对应的数据结构,不需要修改你之前的写入逻辑,适合已经生成了大量文本文件的场景。
修复后的读取代码:
import ast linhas = [] with open('listfile.txt', 'r') as f: for line in f: # 去掉换行符后直接解析为Python对象 current_place = ast.literal_eval(line.strip()) linhas.append(current_place) # 现在可以正常访问嵌套结构 print(linhas[0][0]['telefone']) # 输出 6298855663311 print(linhas[1][0]) # 输出 {}
注意:不要用eval()做转换,eval()会执行字符串内的任意代码,存在严重安全风险;ast.literal_eval只会解析Python基础类型的字面量,安全可控
方案2:使用JSON序列化(通用标准方案)
如果是新开发的功能,更推荐用标准JSON格式做数据持久化,写入读取逻辑规范,还支持跨语言使用。
写入代码:
import json with open('listfile.json', 'w', encoding='utf-8') as f: json.dump(assentosMatriz2D, f, ensure_ascii=False, indent=2)
读取代码:
import json with open('listfile.json', 'r', encoding='utf-8') as f: linhas = json.load(f) # 直接访问结构即可 print(linhas[2][2]['pagamento']) # 输出 Boleto
内容的提问来源于stack exchange,提问作者Joao Victor
相关产品推荐
相关产品推荐

