Python ValueError:格式不正确的字符串
我使用的API返回以下unicode作为响应:Python ValueError:格式不正确的字符串,python,json,python-2.7,api,unicode,Python,Json,Python 2.7,Api,Unicode,我使用的API返回以下unicode作为响应: dd = u"""{"meta":{"request":{"granularity":"Weekly","main_domain_only":false, "domain":"borivali.me", "country":"world"},"status":"Success", "last_updated":"2016-05-09"},"bounce_rate":[{"date":"2016-04-12","bounce_rate
dd = u"""{"meta":{"request":{"granularity":"Weekly","main_domain_only":false,
"domain":"borivali.me",
"country":"world"},"status":"Success",
"last_updated":"2016-05-09"},"bounce_rate":[{"date":"2016-04-12","bounce_rate":0.5},
{"date":"2016-04-19","bounce_rate":0.13355382826388454},
{"date":"2016-04-26","bounce_rate":0.0},
{"date":"2016-05-03","bounce_rate":0.23602940883106352}]}"""
我试图用以下方式解析此信息:
ddd = ast.literal_eval(dd)
print ddd
但是,我得到以下错误:
ValueError:字符串格式错误
我的代码有什么问题
PS:
dd
存储unicode字符串而不是字典。假设以下定义正确:
s = u"""{"meta":{"request":{"granularity":"Weekly","main_domain_only":false,
"domain":"borivali.me",
"country":"world"},"status":"Success",
"last_updated":"2016-05-09"},"bounce_rate":[{"date":"2016-04-12","bounce_rate":0.5},
{"date":"2016-04-19","bounce_rate":0.13355382826388454},
{"date":"2016-04-26","bounce_rate":0.0},
{"date":"2016-05-03","bounce_rate":0.23602940883106352}]}"""
给定该声明,s
是JSON文档,可以使用JSON
库解析为Python对象
import json
p = json.loads(s)
ast
模块用于对Python对象的repr
进行反序列化,repr
在一般情况下并不等于JSON序列化。以下关系适用(至少对于简单的Python类型,在JSON标准中定义良好——列表、dict和字符串)
假设以下定义正确:
s = u"""{"meta":{"request":{"granularity":"Weekly","main_domain_only":false,
"domain":"borivali.me",
"country":"world"},"status":"Success",
"last_updated":"2016-05-09"},"bounce_rate":[{"date":"2016-04-12","bounce_rate":0.5},
{"date":"2016-04-19","bounce_rate":0.13355382826388454},
{"date":"2016-04-26","bounce_rate":0.0},
{"date":"2016-05-03","bounce_rate":0.23602940883106352}]}"""
给定该声明,s
是JSON文档,可以使用JSON
库解析为Python对象
import json
p = json.loads(s)
ast
模块用于对Python对象的repr
进行反序列化,repr
在一般情况下并不等于JSON序列化。以下关系适用(至少对于简单的Python类型,在JSON标准中定义良好——列表、dict和字符串)
有什么需要解析的
dd
是一个字典,请使用它。@DisplayName它是一个unicode。在文章的开头已经提到了这一点。Show-us-解析的unicode文本,而不是Python字典文本。要解析什么dd
是一个字典,请使用它。@DisplayName它是一个unicode。在这篇文章的开头已经提到了。Show us-unicode literal是解析的,而不是Python字典的literal。除此之外,s
的内容不是有效的Python(您只需将它们粘贴到脚本中并直接运行即可看到),因为false
,在Python中是false
。如果没有这个literal\u eval
就行了。但是使用json
绝对是正确的做法。除此之外,s
的内容不是有效的Python(只需将它们粘贴到脚本中并直接运行即可看到),因为false
,在Python中是false
。如果没有这个literal\u eval
就行了。但是使用json
绝对是正确的做法。