Python使用eval强制转换字符串为字典时报错 data.json的内容 {"id": "C_course-v1:McGillX+ATOC185x+2015_T1", "name": "自然灾害(自主模式)", "display_name": [1]} {"id": "C_course-v1:TsinghuaX+THESIS2015X+2015_T1
Python使用eval强制转换字符串为字典时报错
data.json的内容
{"id": "C_course-v1:McGillX+ATOC185x+2015_T1", "name": "自然灾害(自主模式)", "display_name": [1]}{"id": "C_course-v1:TsinghuaX+THESIS2015X+2015_T1", "name": "2015年清华大学研究生学位论文答辩(二)", "display_name": [2]}
{"id": "C_course-v1:TsinghuaX+THESIS2014_1X_tv+_2014_", "name": "2014年清华大学研究生学位论文答辩(一)", "display_name": [NaN]}with open(r'data.json', 'r', encoding='utf-8') as f:
datas = f.readlines()
for data in datas:
print(eval(data))
执行以上代码转换时会报错:
File “”, line 1, in NameError: name ‘NaN’ is not defined
解决方案
为NaN提供一个默认值
改进后的代码如下:
nan_default = {'NaN': 0
}
with open(r'data.json', 'r', encoding='utf-8') as f:
datas = f.readlines()
for data in datas:
print(eval(data, nan_default))