Регулярное выражение вида
GotoIfTime\((?P<from>\d+:\d+)-(?P<to>\d+:\d+),(?P<days>[a-z-]+),\*,\*\?open,s,1\)
извлечёт из строки нужные части. Их можно будет вытащить так:
regexp = re.compile(r'GotoIfTime\((?P<from>\d+:\d+)-(?P<to>\d+:\d+),(?P<days>[a-z-]+),\*,\*\?open,s,1\)', re.I)
m = regexp.match('GotoIfTime(09:00-17:59,mon-fri,*,*?open,s,1)')
if m:
print(m.group('days'), m.group('from'), m.group('to'))
Для работы с датами
datetime ну и просто работа со строками. C днём недели можно будет справиться как-то так:
now = datetime.datetime.now()
weekday = now.weekday()
days = m.group('days').lower()
days_of_week = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'] # datetime.datetime.weekday()
if '-' in days: # диапазон
dfrom, _, dto = days.partition('-')
dfrom, dto = days_of_week.index(dfrom), days_of_week.index(dto)
if dfrom <= dto: # обычный кейс, вроде mon-fri
day_is_good = dfrom <= weekday <= dto
else: # на случае если нужно зацикливание вида fri-tue
day_is_good = (weekday >= dfrom) or (weekday <= dto)
else: # один день, не диапазон
dow = days_of_week.index(days)
day_is_good = weekday == dow
print(day_is_good) # True или False
С временем тоже несложно, разбиваешь через partition() по двоеточию, преобразуешь в целое, потом делаешь
datetime.datetime.now().replace(hour=h, minute=m)
и получаешь указанное время в текущий день.
Таким образом у тебя будет два момента времени, один на базе from другой на базе to. Их можно просто сравнить с текущим:
if from <= now <= to: