python - 在 Python 中解析和清理商店营业时间的文本 block

标签 python string

我目前正在抓取一个网站,以如下格式提取商店营业时间:

"""Hours
Monday 9:30 AM - 9:00 PM
Tuesday 9:30 AM - 9:00 PM
Wednesday 9:30 AM - 9:00 PM
Thursday 9:30 AM - 9:00 PM
Friday 9:30 AM - 11:00 PM
Saturday 9:30 AM - 11:00 PM
Sunday 11:00 AM - 6:00 PM
Holiday Hours
Thanksgiving Day 11:00 AM - 6:00 PM"""

我想像这样处理它:

"""Mon-Thu 9:30AM-9:00PM  
Fri-Sat 9:30AM-11:00PM
Sun & Hol 11:00AM-6:00PM"""

为了学习和构建自己,我很乐意采用拟议的伪代码解决方案。我只是无法在这里解决任何类型的解决方案。

最佳答案

我认为这是 itertools.groupby() 的一个很好的用例- 我们可以用它来对具有相同时间范围的连续几天进行分组。沿着这些线的东西:

from itertools import groupby
from operator import itemgetter
from pprint import pprint


data = """Hours
Monday 9:30 AM - 9:00 PM
Tuesday 9:30 AM - 9:00 PM
Wednesday 9:30 AM - 9:00 PM
Thursday 9:30 AM - 9:00 PM
Friday 9:30 AM - 11:00 PM
Saturday 9:30 AM - 11:00 PM
Sunday 11:00 AM - 6:00 PM
Holiday Hours
Thanksgiving Day 11:00 AM - 6:00 PM"""

# filter relevant rows with weekdays only
rows = [row.split(" ", 1) for row in data.splitlines()[1:-2]]

# group consecutive days by a time range
result = []
for time_range, group in groupby(rows, key=itemgetter(1)):
    days_in_group = [item[0] for item in group]

    first_day, last_day = days_in_group[0][:3], days_in_group[-1][:3]
    range_end = "-" + str(last_day) if first_day != last_day else ""

    result.append("{begin}{end} {time_range}".format(begin=first_day,
                                                     end=range_end,
                                                     time_range=time_range))

pprint(result)

打印:

['Mon-Thu 9:30 AM - 9:00 PM',
 'Fri-Sat 9:30 AM - 11:00 PM',
 'Sun 11:00 AM - 6:00 PM']

请注意,如果每一天都有不同的时间范围,这甚至会起作用。

关于python - 在 Python 中解析和清理商店营业时间的文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46106455/

相关文章:

java - 在Java中如何根据单词的长度来定义猜测的次数?

python - Python中的后台函数

c - 填充动态 c 数组时遇到问题

javascript - 基于另一个字符串更新/添加字符串值

C - 高效编码字符串生成算法

c++ - NTL 字符串到 ZZ 转换以及 ZZ 到字符串

python - yt.streams.get_by_resolution() 返回 None 即使流存在

python - 在 Mac 上运行构建的 PyTables 时出现问题

python - 如何在 pandas 中设置新值但保留原始数据框

python - 尝试使用PyPy v7.3.1安装Numpy,围绕建筑轮子的错误