str转dict时报错:File “”, line 1, in NameError: name ‘true’ is not defined

导读:本篇文章讲解 str转dict时报错:File “”, line 1, in NameError: name ‘true’ is not defined,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

错误说明:python中的字典(dict)的中的值不可以为falsetrue。否则会报错。
eg:

print({'a':false})

结果:
Traceback (most recent call last):
  File "C:\Users\Dream^hao`\Desktop\text.py", line 19, in <module>
    print({'a':false})
NameError: name 'false' is not defined

解决方法:所以,我们需要事先把字符串中的falsetrue、null用值替换掉,可以用01None,或者其他你自己想替换的值都可以。
(1)我常用的是在前面加上一个字典:

globals = {
    'true': 1,
    'false': 0,
    'null': None
}

data = "{'a':false, 'b':null}".replace('false', '0')
data = eval(data, globals)
print(type(data))
print(data)

# 结果:
<class 'dict'>
{'a': 0, 'b': None}

(2)采用第一反应想到的repace替换。

data = "{'a':false}".replace('false', '0')
data = eval(data)
print(type(data), data)

# 结果:
<class 'dict'> {'a': 0}

这样如果含有falsetrue就需要替换多次!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84756.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!