我是靠谱客的博主 含蓄野狼,这篇文章主要介绍Python eval()报错NameError: name ‘null’ is not defined的解决方法详解,现在分享给大家,希望可以做个参考。

一.概念问题.eval()是啥?

eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。
它可以把list,tuple,dict和string相互转化。
在接口自动化中经常用到。
比如啊,我们把测试数据写成数组的格式存放于excle表中,当读取出来时就是str格式,此时用eval,就可以把取到的值转换为正常的数组或者字典的格式了。

NameError: name ‘null’ is not defined是怎么出现的

a = "{"a":1,"b":2,"c":null}"
a = eval(a)
print(a)

在转换的字符串中,存在null时,就会出现NameError: name ‘null’ is not defined这个错误。

二.执行问题.解决方法有哪些?

巧用 replace()方法。
将字符串中的null替换掉!

str = "{"a":1,"b":2,"c":null}"
str.replace("null", "123456")
a = eval(str)
print(a)

这样子就能够将字符串中的null替换掉了。就能够正常的转换了。

应用场景
我为什么要这么做呢?
因为我在做自动化测试的时候,需要在数据库中取出一个
[{“a”:1,“b”:2,“c”:null},{“a”:1,“b”:2,“c”:null},{“a”:1,“b”:2,“c”:null}]
这样子格式的数据来和预期值做对比。
我的预期值只是a,所以我要在这个数据中,把a取出来。
所以就需要上述的这种操作了!

a = "[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]"
hlist = eval(a)

在这一步的时候因为有null存在,所以报错。

a = "[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]"
a = a.replace("null", "123456")
hlist = eval(a)
testhope = 1
if testhope == hlist[0]["a"]:
    pass

这样子就可以了,因为null被替换为了123456.

在这里推荐一个软件测试交流群,QQ:642830685,群中会不定期的分享软件测试资源,测试面试题以及测试行业资讯,大家可以在群中积极交流技术。还有行业大佬为你答疑解惑。另外大家还可以关注我的微信公众号:程序媛一菲,还有更多资源与你分享。

最后

以上就是含蓄野狼最近收集整理的关于Python eval()报错NameError: name ‘null’ is not defined的解决方法详解的全部内容,更多相关Python内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(155)

评论列表共有 0 条评论

立即
投稿
返回
顶部