У меня есть группа строк timestamp. Каждая строка имеет три раздела и разделители между разделами. Разделителем может быть любой из этих [.:,;] Символов. Каждый раздел содержит цифры. Первый может содержать одну или две цифры. Любой другой раздел может содержать две цифры. Мне нужно получить эти цифры и выполнить некоторые действия с ними. Я использую Python3.Регулярное выражение Python, удалять повторяющийся класс
Итак, я пишу этот код:
import re
lines = ('1:24.15', '17.01.01', '05:07:28', '175.11.123', '4:35,07', '01;21;73', '00;1;1', '7;7.12')
pattern = re.compile(r'^(\d{1,2})[:.,;](\d{2})[:.,;](\d{2})$')
for i in lines:
try:
mm, ss, ff = pattern.search(i).groups()
except AttributeError:
print('{} is invalid'.format(i))
print(int(mm) * 60 + int(ss) + round(int(ff)/0.075/1000, 3))
Мой вопрос ... Как я мог уменьшить повторы в этом регулярном выражении?
r'^(\d{1,2})[:.,;](\d{2})[:.,;](\d{2})$'
Заранее спасибо. Я буду благодарен за любой совет.
Красивая идея. Как насчет неверных строк? Мне нужно разобраться с ними ... –
@AndreyMylnikov уверен, поймайте исключение «ValueError». – alecxe
Боюсь, я не понимаю, как это сделать. Пример был бы замечательным ... :) –