Python拆分Kayak爬取的时间列表,生成出发/到达时间列表
拆分Kayak爬取的时间段到两个独立列表
问题描述
从Kayak爬取得到如下时间列表:
['3:20 pm–4:30 pm', '3:20 pm–4:30 pm', '7:05 am–8:00 am', '11:20 am–12:20 pm', '5:25 pm–6:25 pm', '1:55 pm–5:40 pm', '7:00 am–11:05 am', '3:30 pm–7:00 pm', '6:10 pm–9:55 pm', '6:20 pm–9:15 pm', '6:30 am–11:30 am', '7:00 am–10:55 am', '7:30 am–10:35 am', '6:30 am–9:55 am', '5:50 pm–9:15 pm', '7:25 am–11:05 am', '10:40 am–3:40 pm', '11:45 am–3:15 pm', '7:00 am–12:00 pm', '7:00 am–11:55 am', '7:40 am–12:00 pm', '5:20 am–9:55 am', '11:15 am–3:30 pm', '7:40 am–11:05 am', '12:45 pm–6:10 pm', '10:05 am–3:15 pm', '3:30 pm–9:05 pm', '7:15 am–12:00 pm', '7:00 am–12:55 pm', '7:35 am–12:00 pm', '7:25 am–12:00 pm']
需要将每个时间段拆分为出发时间和到达时间(例如'3:20 pm–4:30 pm'拆分为'3:20 pm'和'4:30 pm'),并分别存入departure_time和arrival_time两个独立列表。已尝试使用列表推导式拆分,但需要完整实现方法。
解决方案
你已经完成了最关键的拆分步骤,接下来只需要从拆分后的二维列表中提取对应列即可,以下提供两种实现方式:
方法一:列表推导式提取
通过遍历拆分后的二维列表,分别取出每个子列表的第0位(出发时间)和第1位(到达时间):
# 原始爬取的时间列表 lst_time = ['3:20 pm–4:30 pm', '3:20 pm–4:30 pm', '7:05 am–8:00 am', '11:20 am–12:20 pm', '5:25 pm–6:25 pm', '1:55 pm–5:40 pm', '7:00 am–11:05 am', '3:30 pm–7:00 pm', '6:10 pm–9:55 pm', '6:20 pm–9:15 pm', '6:30 am–11:30 am', '7:00 am–10:55 am', '7:30 am–10:35 am', '6:30 am–9:55 am', '5:50 pm–9:15 pm', '7:25 am–11:05 am', '10:40 am–3:40 pm', '11:45 am–3:15 pm', '7:00 am–12:00 pm', '7:00 am–11:55 am', '7:40 am–12:00 pm', '5:20 am–9:55 am', '11:15 am–3:30 pm', '7:40 am–11:05 am', '12:45 pm–6:10 pm', '10:05 am–3:15 pm', '3:30 pm–9:05 pm', '7:15 am–12:00 pm', '7:00 am–12:55 pm', '7:35 am–12:00 pm', '7:25 am–12:00 pm'] # 拆分每个时间段为出发、到达时间的二维列表(注意分隔符是长破折号「–」,不是普通短横线「-」) split_list = [e.split('–') for e in lst_time] # 提取出发时间列表 departure_time = [item[0] for item in split_list] # 提取到达时间列表 arrival_time = [item[1] for item in split_list] # 输出验证 print("出发时间:", departure_time) print("到达时间:", arrival_time)
方法二:使用zip解包(更简洁)
利用zip(*split_list)可以快速将二维列表的列转换为独立的可迭代对象,再转为列表即可:
# 拆分步骤同上 split_list = [e.split('–') for e in lst_time] # 解包得到出发和到达时间(默认是元组,转为列表) departure_time, arrival_time = zip(*split_list) departure_time = list(departure_time) arrival_time = list(arrival_time)
注意事项
- 确保拆分时使用的是原始字符串中的长破折号「–」,如果误用普通短横线「-」会导致拆分失败。
内容的提问来源于stack exchange,提问作者Gayani Thakshila
相关产品推荐
相关产品推荐

