从文本中缩短工作日

Gar*_*eld -2 python regex formatting datetime python-2.7

我正在编写一个python库,它包含一个由不同类型的小时格式组成的paragrah.段落实际上来自不同的餐馆网站,他们每个网站都有各种格式的营业时间.所以,我决定写一个采用任何格式的库(例如:M-Fri 10am - 12pm,M,Tue,Wed 00:00-18:00等).我的决定是编写一组不同的RegEx,它接受一个字符串,如果它与我的任何模式匹配,则继续.

我选择了RegEx模式匹配,因为不是为每个模式编写自己的逻辑而只是使用str.replace替换可能需要花费很多时间.但是因为我是新手,所以我坚持使用正则表达式.所以你们中的任何人都可以建议我如何完成以下任务?

作为第一步,我想将所有工作日格式缩短为3个字母缩短工作日,如下所示.例:" 星期一09:00 AM - 5:00 PM,星期二09:00 AM - 5:00 PM,周三09:00 AM - 5:00 PM,星期四09:00 AM - 5:00 PM,星期五09: 6:00 AM - 5:00 PM,星期六休息,星期日休息 "

输出应该是" 周一 09:00 AM - 5:00 PM,星期二 09:00 AM - 5:00 PM,星期三 09:00 AM - 5:00 PM,星期四 09:00 AM - 5:00 PM,星期五 09 :上午00点至下午5点,周六休息,太阳落山"

谢谢.

mgi*_*son 5

看似简单str.replace应该在这里工作:

new_paragraph = paragraph.replace('Monday','Mon')
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用该calendar模块使这更容易:

import calendar

for day,abbr in zip(calendar.day_name,calendar.day_abbr):
    paragraph = paragraph.replace(day,abbr)
Run Code Online (Sandbox Code Playgroud)

对于非常大的段落,切换到正则表达式可能是值得的:

import re
import calendar

regex = re.compile('|'.join(calendar.day_name))
sub_dict = dict(zip(calendar.day_name,calendar.day_abbr))
new_paragraph = regex.sub(lambda match: sub_dict[match.group(0)],paragraph)
Run Code Online (Sandbox Code Playgroud)

当然,对于日历,缩写/等是依赖于语言环境的(但也许这是可取的)