工作时遇到字符串
"{'kw': None, 'end_date': None, 'crawl_time': 30, 'isdel': False}"
本来想用json.loads()转换为字典,但是报错了:
Traceback (most recent call last):
File "C:/Users/wode/Desktop/test/3.py", line 7, in <module>
c = json.loads(b)
File "D:\Python36\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "D:\Python36\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\Python36\lib\json\decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
如何才能将字符串转换为字典呢,其实方法很简单,使用eval()方法就可以了。
这是什么原因呢:
1.jpg从图中可以看到,
- 正常的json字符串应该是单引号里面包含双引号,而双引号包含单引号的字符串就不是正常的json数据。
- json数据中的false与true首字母都是小写,且空值为null,python的空值为None。
- eval会直接将字符串转换为字典,内容不变。
尝试了一下,不管是字典字符串还是列表字符串,如果外面是双引号,里面是单引号,都必须使用eval(),才能转换为正常的字典或者是列表。
网友评论