KeyError: 'content'


import requests
import json

class Dao(object):
    def __init__(self, word):
        self.url = "https://dict.youdao.com/webtranslate"
        self.headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
    }
        self.post__data = {
        "from": "auto",
        "to": "auto",
        "w": word
    }

​    def get_data(self):
​        response = requests.post(self.url,headers=self.headers)
​        return response.content
​    def parse_data(self,data):
​        dict_data = json.loads(data)
​        try:
​            print(dict_data['content'] ['out'])
​        except:
​            print(dict_data['content']['word_mean'][0])

​    def run(self):
​        data = self.get_data()
​        self.parse_data(data)

if __name__ == '__main__':
    word = input("请输入你要翻译的单词或句子: ")
    Dao = Dao(word)
    Dao.run()

print(dict_data['content']['word_mean'][0])
~~~~~~~~~^^^^^^^^^^^
KeyError: 'content'

怎么处理呀

  • 您引用的key'content'不在字典dict_data中,请查看字典。

  • 是您自己定义的try:下那条打印输出语句出错,就打印你的print() 就是您看到的信息。try后面的except 后的语句是前面出错后的处理——打印输出“错误提示”或者其他操作。但,感觉您当if...else...用了。


  • 建议:print() 您的dict_data字典,看看你引用的键在不在其中。如果用dict.get(key, tip)引用,就不会报错。如果key不在,取值为None,如果给出第二参数,dict.get() 就返回第二参数。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析: 在代码中,dict_data是通过将返回的JSON数据进行解析而得到的字典类型数据。根据代码中的逻辑,出现KeyError: 'content'错误可能有以下几种原因: 1. 请求返回的JSON数据中不存在'content'这个键。 2. 请求返回的JSON数据中'content'键对应的值不是一个字典类型数据。

    解决方案: 1. 在调用print(dict_data['content']['out'])之前,先检查一下dict_data字典中是否存在'content'这个键。 2. 在try语句中添加更多的异常处理逻辑,以应对其他潜在的错误。

    下面是对代码进行修改的解决方案:

    import requests
    import json
    
    class Dao(object):
        def __init__(self, word):
            self.url = "https://dict.youdao.com/webtranslate"
            self.headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
            }
            self.post_data = {
                "from": "auto",
                "to": "auto",
                "w": word
            }
    
        def get_data(self):
            response = requests.post(self.url, headers=self.headers)
            return response.content
    
        def parse_data(self, data):
            dict_data = json.loads(data)
            if 'content' in dict_data:
                content = dict_data['content']
                if 'out' in content:
                    print(content['out'])
                elif 'word_mean' in content:
                    print(content['word_mean'][0])
                else:
                    print("无法解析结果")
            else:
                print("无法解析结果")
    
        def run(self):
            data = self.get_data()
            self.parse_data(data)
    
    if __name__ == '__main__':
        word = input("请输入你要翻译的单词或句子: ")
        Dao = Dao(word)
        Dao.run()
    

    通过以上修改,我们对dict_data字典中的键进行了逐一检查,以避免出现KeyError异常。当然,还可以根据具体业务需求对其他异常进行更细致的处理。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^