Python中用eval将字符串转换为字典时候出错:NameError: name ‘null’ is not defined的解决方法

这两天在用python调用接口时,因为接口返回的是str类型的数据,形如:

因为这样的str类似字典,所以我想把它转为字典以便处理,使用的是eval来进行转换,如下:

<pre name="code" class="python">a='{"errno":0,"errmsg":null,"unassigned":0,"total":0,"list":null}'
a=eval(a)
print type(a)

 结果出现错误如下:NameError: name ‘null’ is not defined 

查询资料发现,python无法处理null这样的字符串,所以报错。解决方法有两个:

一、把null转换为python可以接受的字符,例如空字符串

如:

global null
null=''
a='{"errno":0,"errmsg":null,"unassigned":0,"total":0,"list":null}'
a=eval(a)
print type(a)

发现这时就可以正常转换了。

二、使用json模块的loads()方法

这是一个大杀器,直接使用如下语句:

a=json.loads(a)
print type(a)
完事,转换正常,python自动把null转换为了python支持的None。

当然,要记得引入json。


注意:json字符串中,必须用双引号,如果定义成下面这样,是不对的

a="{'errno':0,'errmsg':null}"

使用json,loads()时会报错:

ValueError: Expecting property name: line 1 column 1 (char 1)




在这个错误中,报错的原因是因为在代码中引用了一个未定义的变量null。这个错误可能是由于变量null在代码中没有被正确定义或赋值导致的。在Python中,null并不是一个合法的关键字或标识符。 引用中的代码使用了null作为一个字符串的值,但在Python中,null应该使用None表示。因此,需要将代码中的null替换为None。 引用中的代码尝试将一个字符串转换字典,但字符串中的null并不是Python中的合法值。同样地,需要将代码中的null替换为None。 引用中的代码也存在类似的问题,需要将代码中的null替换为None。 修正后的代码如下: 引用中的代码: a = '[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]' a = a.replace("null", "None") hlist = eval(a) testhope = 1 if testhope == hlist中的代码: null = None a = '{"errno":0,"errmsg":null,"unassigned":0,"total":0,"list":null}' a = eval(a) print(type(a)) 引用中的代码: a = '[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]' a = a.replace("null", "None") hlist = eval(a)<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python eval()报错NameError: name ‘null’ is not defined解决方法详解](https://blog.csdn.net/weixin_53519100/article/details/113179713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [python 报错:NameError: name ‘null’ is not defined](https://blog.csdn.net/qq_39813400/article/details/117516798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值