Python读取含嵌套列表的文本文件时如何去除首尾多余字符获得正确数据
问题解决方法
你当前得到的lines是长度为1的列表,唯一元素是符合Python列表字面量格式的字符串。你之前使用pop方法操作失效,是因为lines本身只有1个元素,先后弹出首尾相当于把唯一的元素也删除了,自然会清空数据。不需要手动删除首尾符号,直接用Python内置的字面量解析工具处理即可:
推荐方案:使用ast.literal_eval(安全)
该方法专门用于解析Python字面量结构,不会执行任意代码,安全性远高于普通eval:
import ast with open('ej11.txt') as f: lines = f.readlines() # 取列表第一个元素做字面量解析 target_data = ast.literal_eval(lines[0])
执行后target_data就是你需要的嵌套列表结构。
可选方案(不推荐,仅作参考)
如果你的文件来源100%可信,不存在代码注入风险,可以直接用eval处理:
target_data = eval(lines[0])
注意:
eval会执行字符串内包含的所有Python代码,若文件内容被恶意篡改会带来严重安全风险,非必要场景请优先使用ast.literal_eval。
内容的提问来源于stack exchange,提问作者DaniV
相关产品推荐
相关产品推荐

