Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串中获取ID_Python - Fatal编程技术网

Python 从字符串中获取ID

Python 从字符串中获取ID,python,Python,我有一个字符串,我想从中获取“id”编号12079500908。我试图使用ast.literal\u eval,但收到ValueError:格式错误的字符串。是否有其他方法从下面的字符串中获取id编号 doc_request = urllib2.Request("https://api.box.com/2.0/search?query=SEARCHTERMS", headers=doc_headers) doc_response = urllib2.urlopen(doc_request) vi

我有一个字符串,我想从中获取“id”编号
12079500908
。我试图使用
ast.literal\u eval
,但收到
ValueError:格式错误的字符串
。是否有其他方法从下面的字符串中获取
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)
编辑 输出:

调用
doc\u dict
给出:

ValueError: malformed string

ast.literal\u eval
用于解析有效的Python语法,您拥有的是JSON。有效的JSON看起来很像Python语法,只是JSON可以包含
null
true
false
,当通过JSON解码器传递时,在Python中映射到
None
true
false
。你可以用这个。代码可能如下所示:

import json
doc_dict = json.loads(view_doc_response)
first_id = doc_dict['entries'][0]['id']  # with your data, should be 12079500908

请注意,这假设您在字符串末尾手动添加了
,可能是在缩短字符串之后。如果
实际上也在您的代码中,那么您的JSON无效,您需要进行一些处理才能正常工作。

您可以显示您正在使用的确切代码行吗?您注意到最后的“…”了吗?您的源数据已损坏。是否可以获取完整字符串而不是此截断字符串?好的,我将发布完整字符串。我将发布我使用的确切代码。这个字符串是从哪里来的?它是由
repr
生成的吗?如果没有,则不应在其上使用
literal\u eval
。(如果它是由
repr
生成的,但您正在编写生成它的代码…请不要使用
repr
literal\u eval
)谢谢。。你做到了。我不知道我有一个JSON。我以为那只是一根绳子。我会在几分钟内接受答案。谢谢@Django新手:如果它“只是一个字符串”,为什么您希望
literal\u eval
能够处理它?它必须是某种格式,处理任何格式的第一个关键总是要找出它是什么格式…
import json
doc_dict = json.loads(view_doc_response)
first_id = doc_dict['entries'][0]['id']  # with your data, should be 12079500908