列表对象没有属性“detectedLanguage”

问题描述

我正在使用 microsoft azure 翻译器 API 来检测和翻译用户输入的语言并将其翻译回英语。翻译后,我以json格式打印结果,可以在这里看到:https://i.stack.imgur.com/Zcq9l.png

之后,我尝试打印在“text:”位之后翻译的任何内容,但是,每次尝试这样做时我都会收到错误消息。我尝试使用 for 循环并引用它们,但它不起作用。

这是代码位:

path = '/translate'
constructed_url = endpoint + path

params = {
'api-version': '3.0','to': ['en']
}

constructed_url = endpoint + path

headers = {
'Ocp-Apim-Subscription-Key': subscription_key,'Ocp-Apim-Subscription-Region': location,'Content-type': 'application/json','X-ClientTraceId': str(uuid.uuid4())
 }   

user_input = input("You: ")
body = [{
  "text": user_input
  }]

request = requests.post(constructed_url,params=params,headers=headers,json=body)
response = request.json()
json_data = json.dumps(response,sort_keys=True,ensure_ascii=False,indent=4,separators=(",",": "))
print(json_data)

print("Translated Text: " + response.detectedLanguage.translations.text)

最后一行是导致错误的原因,但我不确定如何解决。如果有人可以相应地指导我,我将不胜感激。 [1]:https://i.stack.imgur.com/Zcq9l.png

解决方法

对象是一个字典列表(在这种情况下只有一个)。如链接图片所示。

在这种特殊情况下,要访问翻译文本,您需要执行以下操作:

response[0]["translations"]["text"]