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 ответов

58 просмотров

Спасибо!

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта