我有一个字符串,我想抓住"id"号码12079500908
.我正在尝试使用ast.literal_eval
但收到了一个ValueError: malformed string
.有没有其他方法可以id
从下面的字符串中获取数字?
doc_request = urllib2.Request("https://api.box.com/2.0/search?query=SEARCHTERMS", headers=doc_headers) doc_response = urllib2.urlopen(doc_request) view_doc_response = doc_response.read() doc_dict=ast.literal_eval(view_doc_response)
编辑 输出:
view_doc_response = '{"total_count":1,"entries":[{"type":"file","id":"12079500908","sequence_id":"1","etag":"1","sha1":"6887169228cab0cfb341059194bc980e1be8ad90","name":"file.pdf","description":"","size":897838,"path_collection":{"total_count":2,"entries":[{"type":"folder","id":"0","sequence_id":null,"etag":null,"name":"All Files"},{"type":"folder","id":"1352745576","sequence_id":"0","etag":"0","name":"Patient Files"}]},"created_at":"2013-12-03T10:23:30-08:00","modified_at":"2013-12-03T11:17:52-08:00","trashed_at":null,"purged_at":null,"content_created_at":"2013-12-03T10:23:30-08:00","content_modified_at":"2013-12-03T11:17:52-08:00","created_by":{"type":"user","id":"20672372","name":"name","login":"email"},"modified_by":{"type":"user","id":"206732372","name":"name","login":"email"},"owned_by":{"type":"user","id":"206737772","name":"name","login":"email"},"shared_link":{"url":"https:\\/\\/www.box.net\\/s\\/ymfslf1phfqiw65bunjg","download_url":"https:\\/\\/www.box.net\\/shared\\/static\\/ymfslf1phfqiw65bunjg.pdf","vanity_url":null,"is_password_enabled":false,"unshared_at":null,"download_count":0,"preview_count":0,"access":"open","permissions":{"can_download":true,"can_preview":true}},"parent":{"type":"folder","id":"1352745576","sequence_id":"0","etag":"0","name":"Patient Files"},"item_status":"active"}],"limit":30,"offset":0}'
打电话doc_dict
给:
ValueError: malformed string
Andrew Clark.. 7
ast.literal_eval
用于解析有效的Python语法,你拥有的是JSON.有效的JSON看起来很像,除了JSON Python语法可以包含null
,true
和false
其分别对应的None
,True
以及False
在Python当通过JSON解码器通过.你可以用json.loads
它.代码可能如下所示:
import json doc_dict = json.loads(view_doc_response) first_id = doc_dict['entries'][0]['id'] # with your data, should be 12079500908
请注意,这假设您手动添加...
了字符串的末尾,可能是在缩短它之后.如果那...
实际上在你的代码中,那么你有无效的JSON,你需要做一些处理才能工作.
ast.literal_eval
用于解析有效的Python语法,你拥有的是JSON.有效的JSON看起来很像,除了JSON Python语法可以包含null
,true
和false
其分别对应的None
,True
以及False
在Python当通过JSON解码器通过.你可以用json.loads
它.代码可能如下所示:
import json doc_dict = json.loads(view_doc_response) first_id = doc_dict['entries'][0]['id'] # with your data, should be 12079500908
请注意,这假设您手动添加...
了字符串的末尾,可能是在缩短它之后.如果那...
实际上在你的代码中,那么你有无效的JSON,你需要做一些处理才能工作.