如何从列表中的 json 响应中提取项目并在其前面加上一个词?

How to extract items out of a json response within a list and with a word in front of it?

我正在使用 scrapy 来抓取一些页面。我在从收到的 json 响应中提取某些项目时遇到了一些问题。响应如下所示:

json
([
{
    "id":"8589098",
    "sid":"3716027243",
    "..."
 }
])

当我尝试将此响应加载为 json

json.loads(response.body_as_unicode())

它失败了

ValueError: No JSON object could be decoded

简单json告诉我这个:

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我认为问题是,在 json 部分的前面,json 这个词。我该怎么做才能解决这个问题?我试图削减响应,但我没有成功。

感谢您的帮助!

此致, 朱利安

试试这个,

In [1]: a = 'json([{"id":"8589098", "sid":"3716027243"}])'

In [2]: t = a.strip('json(').strip(')')

In [3]: json.loads(t)
Out[3]: [{u'id': u'8589098', u'sid': u'3716027243'}]

您可以使用 re 提取大多数外括号内的所有内容,并丢弃外面的所有内容,因此它适用于其他变体:

In [1]: text = 'json([{"id":"8589098", "sid":"3716027243"}])'

In [2]: json.loads(re.search('{.*}', text).group())
Out[2]: {u'id': u'8589098', u'sid': u'3716027243'}