Задача 1. Извлечение дат
Реализуйте программу, которая находит в тексте все даты в форматах DD/MM/YYYY, DD-MM-YYYY и DD.MM.YYYY.
Данные
text = (
"The events N 123456 happened on 15/03/2025, 01.12.2024 and "
"09-09-2023. Deadline: 28/02/2022."
)
Пример вывода
15/03/2025
01.12.2024
09-09-2023
28/02/2022
Решение
# extract_dates.py
import re
def extract_dates(text: str) -> list[str]:
pattern = r"\b\d{2}[/.-]\d{2}[/.-]\d{4}\b"
return re.findall(pattern, text)
if __name__ == "__main__":
text = (
"The events N 123456 happened on 15/03/2025, 01.12.2024 and "
"09-09-2023. Deadline: 28/02/2022."
)
for date in extract_dates(text):
print(date)
Разбор: \d{2} — день и месяц, [/.-] — один из разделителей, \d{4} — год. Символ - внутри [...] стоит последним, поэтому не требует экранирования.
Задача 2. Разделение списка тегов
Прочитайте строку с тегами, разделите их по запятым, точкам с запятой, слэшам или пробелам, удалите лишние пробелы и пустые значения.
Данные
tag_input = "python, data-science / machine-learning; AI neural-networks"
Пример вывода
['python', 'data-science', 'machine-learning', 'AI', 'neural-networks']
Решение
# split_tags.py
import re
def split_tags(tag_input: str) -> list[str]:
parts = re.split(r"[,;\s/]+", tag_input)
return [part.strip() for part in parts if part.strip()]
if __name__ == "__main__":
tag_input = "python, data-science / machine-learning; AI neural-networks"
print(split_tags(tag_input))
Разбор: класс символов [,;\s/]+ задаёт любой из разделителей в любом количестве. part.strip() убирает лишние пробелы, а условие if part.strip() отбрасывает пустые строки.
Как проверить в VS Code
- Создайте файл с решением (например,
extract_dates.py). - Вставьте тестовые данные из условия.
- Запустите:
python extract_dates.py - Сравните вывод с примером из задания.
Проверить по докуентации: в production для валидации дат лучше использовать
datetime.strptime или модуль datetime, а не только regex; для простого разделения по одному символу иногда достаточно метода str.split.