获取响应字符串中最里面的项

2022-07-06 11:48:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了这个请求的回复,它是一个列表

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"时,我只得到[


Tags: inimportjsonlangstringtitleitthisrequeststranslateenhascommaestatitleurl
1条回答
网友
1楼 ·
  • r由Google返回的是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]

然而,Google Translate只提供了一些类似JSON的东西——实际上,它不是有效的JSON(因为Google不再支持这个API);所以你要么美化它,要么自己解析它

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