使用json.load读取文件嵌套列表时遇JSONDecodeError求助
问题解决:读取文件中嵌套列表的JSON解码错误
错误原因
你文件里的内容[[i,1],[i,2]]不是合法的JSON格式:
- JSON中不存在
i这种未加引号的标识符,若i是字符串,必须用双引号包裹成"i"; - JSON不支持Python变量,仅识别自身规范内的数值、字符串、布尔值、数组、对象、null这些类型。
解决方案
方案1:修改文件为合法JSON格式
把文件内容改成:
[["i",1],["i",2]]
接着用你原本的代码就能正常运行:
with open(mytextFile) as f: nestedList = json.load(f) print(nestedList)
方案2:直接读取Python格式的列表(仅适用于信任的文件内容)
如果不想修改文件,且能确保文件内容是安全的Python代码,可以用eval解析:
with open(mytextFile) as f: content = f.read().strip() nestedList = eval(content) print(nestedList)
⚠️ 注意:eval会执行任意Python代码,若文件来源不可信,绝对不要用这个方法,存在安全风险。
额外说明
JSON和Python列表的语法存在不少差异,比如:
- JSON字符串必须用双引号,Python支持单/双引号;
- JSON布尔值是
true/false,Python是True/False; - JSON的空值是
null,Python是None。
如果要用json模块读取文件,必须严格遵循JSON语法规范。
内容的提问来源于stack exchange,提问作者Karl 17302
相关产品推荐
相关产品推荐

