如何在Python中从SearchResult对象提取数据?
解决rttapi中SearchResult对象的信息获取问题
SearchResult是rttapi模块定义的自定义类实例,并非列表或字典,因此无法使用下标访问。你可以通过以下几种方式获取其中的信息:
1. 查看对象的可用属性和方法
使用Python内置的dir()函数,列出该对象的所有属性与方法:
from rttapi.api import RttApi api = RttApi('rttapi_exampleuser', '00112233aabbccdd') departures = api.search_station_departures('EDB') # 打印所有属性和方法名称 print(dir(departures))
输出中不带双下划线(或仅单下划线)的项,通常是和业务数据相关的属性,比如services、station这类。
2. 直接访问对象属性
结合RTT API的业务逻辑,search_station_departures返回的结果应该包含车站的出发车次信息,你可以尝试直接访问对应的属性:
# 获取并遍历出发车次列表 if hasattr(departures, 'services'): for service in departures.services: # 示例:打印车次编号与目的地 print(f"车次ID: {service.service_id}, 目的地: {service.destination_name}") # 获取车站基础信息 if hasattr(departures, 'station'): print(f"车站名称: {departures.station.name}, 车站代码: {departures.station.crs}")
3. 转为字典查看结构
多数Python类会自带__dict__属性,你可以将对象转为字典,直观查看内部存储的所有键值对:
# 打印对象的字典形式,查看数据结构 print(departures.__dict__)
根据输出的字典结构,就能对应找到需要访问的属性名称。
4. 查看模块源码
如果以上方法仍不清晰,可直接查看rttapi模块的源码。在Python的site-packages目录找到rttapi文件夹,打开model.py文件,找到SearchResult类的定义,里面会明确列出所有属性和对应的业务含义。
内容的提问来源于stack exchange,提问作者Struan Lawrie
相关产品推荐
相关产品推荐

