Python如何正确读取txt文本文件中存储的嵌套列表
问题根源
你之前使用strip('][').split(', ')的读取逻辑,会把所有层级的方括号全部剔除,再按逗号分割字符串,从原理上就会丢失全部嵌套结构,且分割出的元素默认是字符串类型,自然无法还原原列表的嵌套结构和整数数据类型。
适配当前已生成文件的读取方法
直接使用Python标准库ast模块的literal_eval方法即可。该方法可以安全解析合法的Python基础字面量(包括嵌套列表、字典、数字、字符串等),不会像原生eval一样存在执行恶意代码的安全风险,完美适配你用str(l1)写入的文件格式。
读取代码如下:
import ast with open("l1.txt", "r", encoding="utf-8") as f: content = f.read() l1 = ast.literal_eval(content)
执行后得到的l1和初始写入的列表完全一致:[[[0,1,2,3,4],[5,6,7]],[8,9,10],[11,12,13,14]],嵌套结构完整,元素均为整数类型。
更推荐的结构化数据存储方案
如果后续需要频繁存储列表、字典这类结构化数据,不建议使用str()转字符串的写入方式,更推荐用标准库json做序列化,跨语言兼容性更强,读写逻辑更稳定:
- 写入代码示例
import json l1 = [[[0,1,2,3,4],[5,6,7]],[8,9,10],[11,12,13,14]] with open('l1.txt', 'w', encoding='utf-8') as f: json.dump(l1, f)
- 读取代码示例
import json with open("l1.txt", "r", encoding="utf-8") as f: l1 = json.load(f)
内容的提问来源于stack exchange,提问作者oriana zhou
相关产品推荐
相关产品推荐

