如何从列表中的 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'}
我正在使用 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'}