获取响应字符串列表中最内层的项目

时间:2016-01-20 00:45:16

标签: python json python-requests

我有此请求获得响应,它是一个列表。

import requests
import json

lang='es'
title = 'this string, has a comma in it'
titleUrl = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=%s&dt=t&q=%s" % (lang, title)
r = requests.get(titleUrl).text
d = json.dumps(r)
o = json.loads(d)
print o[0][0][0]

请求返回

[[["esta cadena, tiene una coma en ella","this string, has a comma in it",,,0]],,"en"]

但是当我尝试打印"esta cadena, tiene una coma en ella"时,我只会[

1 个答案:

答案 0 :(得分:1)

    Google返回的
  • r是JSON(嗯,好吧。继续阅读。)
  • d是JSON的JSON。
  • o再次是原始JSON。
  • 由于o只是一个字符串(以JSON表示法),o[0]是包含其第一个字符的字符串(o[0][0][0]是第一个字符的第一个字符的第一个字符JSON字符串,与o[0])相同。

您永远无法正确解码对象。你需要这个:

r = requests.get(titleUrl).text
o = json.loads(r)
print o[0][0][0]

然而,谷歌翻译只给你一些看起来像JSON的东西 - 它实际上不是有效的JSON(因为谷歌停止支持该API);所以你必须要美化它,或者自己解析它。

import re
j = re.sub(r",,+", ",", r)
o = json.loads(j)
print o[0][0][0]