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

时间:2015-04-22 09:02:38

标签: jquery json parsing scrapy

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

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

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

json.loads(response.body_as_unicode())

它以

失败
ValueError: No JSON object could be decoded

Simplejson告诉我:

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

我认为问题是,在json部分前面,json这个词代表。我该怎么做才能解决这个问题?我试图削减回应,但我没有运气。

感谢您的帮助!

祝你好运, 儒略

2 个答案:

答案 0 :(得分:1)

试试这个,

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'}]

答案 1 :(得分:1)

你可以使用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'}