首页 > 编程问答 >"detail": "无法读取未定义的属性'0'"

"detail": "无法读取未定义的属性'0'"

时间:2024-07-30 13:35:02浏览次数:10  
标签:python windows compiler-errors

我试图使用以下代码将行添加到sheety项目的电子表格中:

import requests
import json
class FlightData:
    def __init__(self):
        self.api_id = "nMiV3AM7RZvMQGBC9d5r8qwkjikmIBzh"
        self.api_secret = "KtUx9vmoOLYFiwEL"
        self.token = " RpbiYmNrhmP04WHmcAUxCFISMRBC"
   
        def get_token(self):
        "To get Token when it is invalid"
        endpoint = "https://test.api.amadeus.com/v1/security/oauth2/token"
        parameter = {'grant_type': 'client_credentials', "client_id": self.api_id, "client_secret": self.api_secret}
        header = {"Content-Type": "application/x-www-form-urlencoded"}
        response = requests.post(url=endpoint, data=parameter, headers=header)
        response_data = response.text
        res = json.loads(response_data)
        print(res)
        self.token = res['access_token']


   def get_iata_code(self):
        endpoint = "https://test.api.amadeus.com/v1/reference-data/locations/cities"
        parameter = {"keyword": "PAR", 'max': 10}
        header = {"Authorization": f"Bearer {self.token}"}
        response = requests.get(url=endpoint, params=parameter, headers=header)
        data = json.loads(response.text)
        data1 = []
        for i in range(0, len(data['data'])):
            name = data["data"][i]["name"]
            state_code = data["data"][i]["address"]["stateCode"]
            dict1 = {"name": name, "stateCode": state_code}
            data1.append(dict1)
        return data1


def iata_code_adder(info):
    list1 = info
    endpoint = "https://api.sheety.co/fd65cc87954706f35e0debbd37a8d429/flightDeals/prices"
    print(type(info))
    for i in range(len(list1)):
        body = {"price": {"name": list1[i]["name"], "stateCode": list1[i]["stateCode"]}}
        response = requests.post(url=endpoint, json=body)
        print(response.text)
fd = FlightData()
data = fd.get_iata_code()
iata_code_adder(data)

上面的代码给了我一个错误。这是什么意思,我该如何解决它?

"errors": [
  {
    "detail": "Cannot read property '0' of undefined"
  }]

我本来希望添加包含州名称和州代码的行,但我不断收到此错误“无法读取未定义的属性‘0’”


错误信息“Cannot read property '0' of undefined”表示正在尝试访问未定义变量的索引 0。在的代码中,问题出在 iata_code_adder 函数中,具体来说是在这一行:

body = {"price": {"name": list1[i]["name"], "stateCode": list1[i]["stateCode"]}}

出现这个错误的原因是正在访问 list1[i] ,但是的 API 响应中可能没有 data 字段,或者 data 字段是一个空列表。因此,当尝试访问 list1[i]["name"] list1[i]["stateCode"] 时,就会出现错误,因为它无法读取 undefined 的属性 '0'。

为了解决这个问题,需要检查的 API 响应,确保它包含 data 字段,并且该字段是一个非空列表。可以通过打印 data 变量的值来检查这一点。

以下是修改后的代码:

import requests
import json


class FlightData:
    def __init__(self):
        self.api_id = "nMiV3AM7RZvMQGBC9d5r8qwkjikmIBzh"
        self.api_secret = "KtUx9vmoOLYFiwEL"
        self.token = "RpbiYmNrhmP04WHmcAUxCFISMRBC"

        def get_token(self):
            "To get Token when it is invalid"
            endpoint = "https://test.api.amadeus.com/v1/security/oauth2/token"
            parameter = {
                'grant_type': 'client_credentials',
                "client_id": self.api_id,
                "client_secret": self.api_secret
            }
            header = {"Content-Type": "application/x-www-form-urlencoded"}
            response = requests.post(url=endpoint, data=parameter, headers=header)
            response_data = response.text
            res = json.loads(response_data)
            print(res)
            self.token = res['access_token']

    def get_iata_code(self):
        endpoint = "https://test.api.amadeus.com/v1/reference-data/locations/cities"
        parameter = {"keyword": "PAR", 'max': 10}
        header = {"Authorization": f"Bearer {self.token}"}
        response = requests.get(url=endpoint, params=parameter, headers=header)
        data = json.loads(response.text)
        # 检查 data 是否存在并且是非空列表
        if 'data' in data and data['data']:
            data1 = []
            for i in range(0, len(data['data'])):
                name = data["data"][i]["name"]
                state_code = data["data"][i]["address"]["stateCode"]
                dict1 = {"name": name, "stateCode": state_code}
                data1.append(dict1)
            return data1
        else:
            print("API 响应中没有 data 字段,或者 data 字段为空列表")
            return []


def iata_code_adder(info):
    list1 = info
    endpoint = "https://api.sheety.co/fd65cc87954706f35e0debbd37a8d429/flightDeals/prices"
    print(type(info))
    for item in list1:
        body = {"price": {"name": item["name"], "stateCode": item["stateCode"]}}
        response = requests.post(url=endpoint, json=body)
        print(response.text)


fd = FlightData()
data = fd.get_iata_code()
iata_code_adder(data)

在这个修改后的代码中,我们在 get_iata_code 函数中添加了一个检查,以确保 data 字段存在并且是一个非空列表。如果 data 字段不存在或者为空列表,则打印一条错误消息并返回一个空列表。这将防止在 iata_code_adder 函数中出现“Cannot read property '0' of undefined”错误。

标签:python,windows,compiler-errors
From: 78809926

相关文章

  • PIL 和 python 静态类型
    我有一个函数参数,它可以接受图像的多种类型:defsomefunc(img:Union[np.array,Image,Path,str]):PILImage在这种情况下抛出以下异常:TypeError:Union[arg,...]:eachargmustbeatype.Got<module'PIL.Image'from...进一步检查图像对象后这才有......
  • 学会用Python爬取小说网站,想看什么就爬什么,广告也不用看了~
    今天以爬取笔趣阁小说网站为例,练习Python爬虫技术。通过这个爬虫,可以完成批量爬取一本小说的所有章节,并将所有章节内容按顺序保存到一个txt文档内,下面我们就开始吧。首先,百度搜索“笔趣阁”,发现有很多网站都叫笔趣阁。我们可以随便挑选一个网站尝试,本文我以‘https://......
  • 计算机毕业设计django+vue《Python数据分析》的教学系统【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今数字化时代,数据分析已成为各行各业不可或缺的技能之一,而Python作为数据分析领域的首选语言,其重要性日益凸显。然而,传统的教学模式在......
  • 如何将多个变量分配给 python 函数中的单个参数?
    我正在尝试编写一个程序,如果可能的话,它需要一个三项式并对其进行因式分解。每当用户输入A、B和C时,三项式应该通过Factor(product,summation)函数获取,但我似乎无法弄清楚如何将A和C分配给乘积arg,将B分配给我尝试在函数外部声明不同的变量,product=(a*c)和summati......
  • python - 从文本生成音乐
    请给我一些建议为了解释一下,我输入“深度睡眠的睡眠音乐”,它将返回一个wav文件:https://www.youtube.com/watch?v=1wAdQhFJy54或者我给出一个wav文件,它会返回相同的现在这是我尝试过的:https://github.com/facebookresearch/audiocraft......
  • 在 Windows 上使用 FFmpeg
    在Windows上使用FFmpeg进行各种多媒体操作相对直接,但需要先完成安装。下面是详细的步骤,包括如何安装和使用FFmpeg:1.安装FFmpeg下载FFmpeg:访问FFmpeg官方网站。在Windows部分,点击WindowsbuildsbyBtbN或WindowsbuildsbyZeranoe(如果有可用)。解压FFmpe......
  • 从零开始的Python开发日记(7):短信验证功能开发流程
    短信验证功能开发流程在开发一个包含登录、注册以及短信验证的功能时,你需要遵循一个系统的开发流程。以下是实现这一功能的基本步骤,包括所需的技术和代码示例。1.环境配置首先,确保你的开发环境已经配置好,并安装了必要的库和工具。pipinstallfastapiuvicornsqlalche......
  • 【Python数值分析】革命:引领【数学建模】新时代的插值与拟合前沿技术
    目录​编辑第一部分:插值的基本原理及应用1.插值的基本原理1.1插值多项式1.2拉格朗日插值 1.3牛顿插值 1.4样条插值2.插值的Python实现2.1使用NumPy进行插值2.2使用SciPy进行插值2.2.1一维插值​编辑2.2.2二维插值3.插值的应用场景3.1数据平......
  • 在 Visual Studio 2022 中,开发 ASP.NET 网站并在 Windows Server 2003 中进行部署
    在WindowsServer2003/WindowsXP中,是无法安装4.0以上版本.NETFramework的,最高只能到4.0。如果要在其上部署ASP.NET程序,只能选择4.0版本进行开发。一、ASP.NET网站程序开发新建项目类型:ASP.NETWeb应用程序(.NETFramework)引用包:Microsoft.AspNet.WebApi、Mic......
  • 在家用电脑上设置 Python 和 Jupyter,尝试打开 Jupyter 笔记本并显示错误,无法获取
    我有最新的Python版本3.12.4和以下版本的Jupyter:SelectedJupytercorepackages...IPython:8.26.0ipykernel:6.29.5ipywidgets:notinstalledjupyter_client:8.6.2jupyter_core:5.7.2jupyter_server:2.14.2jupyterlab......