169 похожих чатов

Обнова: с без пяти/десяти/пятнадцати/двадцати python import re from datetime import datetime def extract_time(text):

patterns = [
r'(\d+) часов?',
r'в (\d+.?\d*) (утра|дня|вечера)',
r'в половину (\d+.?\d*)',
r'без (\d+) (\d+)',
r'ровно в (\d+.?\d*)',
r'без пяти (\d+)',
r'без десяти (\d+)',
r'без четверти (\d+)',
r'без двадцати (\d+)'
]

current_hour = datetime.now().hour

for pattern in patterns:
match = re.search(pattern, text)
if match:
groups = match.groups()
if groups[0]:
hour = int(groups[0])
elif groups[1]:
hour = float(groups[1])
if groups[2] == 'утра' and hour >= 6:
hour -= 12
elif groups[2] == 'вечера' and hour < 6:
hour += 12
elif groups[3]:
hour = int(groups[3])
minute = 30
elif groups[4]:
hour = int(groups[5])
minute = 60 - int(groups[4])
elif groups[6]:
hour = float(groups[6])
minute = 0
elif groups[7]:
hour = int(groups[8])
minute = 55
elif groups[9]:
hour = int(groups[10])
minute = 50
elif groups[11]:
hour = int(groups[12])
minute = 45
elif groups[13]:
hour = int(groups[14])
minute = 40

hour = hour if 0 <= hour <= 23 else (hour + 24) % 24
return datetime(2023, 9, 8, hour, minute).strftime('%H:%M')

return None

text = "Встретимся без пяти шесть"
print(extract_time(text)) # 17:55

Теперь добавлена поддержка "без пяти", "без десяти" и т.д. - парсится час и вычисляются соответствующие минуты.

2 ответов

18 просмотров

Спасибо!

Den- Автор вопроса
Loork
Спасибо!

проверь ещё регексы, они слова не захватывают вроде без пяти шесть

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann ٩( 💢•̀ з•́)و Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
22
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта