Как проверить, имеет ли строка, входящая в функцию, правильный формат? Правильный формат - «8:30:00» или «16:00:00».
Что-то вроде:
string_format = "%h%m%s"
if input_data == string_format:
do this
else:
error
См. stackoverflow.com/questions/1322464/…. Я думаю, что этот вопрос дублирован.
Возможный дубликат проверка формата времени python






Вы можете использовать регулярное выражение для соответствия формату, а затем принимать меры в зависимости от того, найдено ли совпадение. Предоставьте re.match() шаблон и строку, которую вы хотите проверить:
import re
strings = ["8:30:00", "16:00:00", "845:00", "aa:bb:00"]
for s in strings:
if re.match("\d{1,2}:\d{2}:\d{2}", s): # Will return True if pattern matches s
print("match: {}".format(s)) # Take action on a matching pattern
else:
print("no match: {}".format(s))
Шаблон \d{1,2}:\d{2}:\d{2} будет соответствовать 1 или 2 цифрам, двоеточию, 2 цифрам, двоеточию и 2 цифрам.
Выше будет напечатано:
match: 8:30:00
match: 16:00:00
no match: 845:00
no match: aa:bb:00
Вы можете сделать это без использования регулярного выражения. В Python есть метод strptime(), который анализирует строку, представляющую время, в соответствии с форматом. Если строка не может быть проанализирована в соответствии с форматом или если в ней есть избыточные данные после синтаксического анализа, вызывается ValueError.
Вот код:
import time
given_time = "10:30:45"
try:
time.strptime(given_time, '%H:%M:%S')
print("Correct Format")
except ValueError:
print("Incorrect Format")
Вот его форматы:
% a - сокращенное название дня недели
% A - полное название дня недели
% b - сокращенное название месяца
% B - полное название месяца
% c - предпочтительное представление даты и времени
% C - номер века (год, деленный на 100, диапазон от 00 до 99)
% d - день месяца (с 01 по 31)
% D - то же, что и% m /% d /% y
% e - день месяца (с 1 по 31)
% g - как% G, но без века
% G - год из 4 цифр, соответствующий номеру недели ISO (см.% V).
% h - то же, что и% b
% H - час в 24-часовом формате (от 00 до 23)
% I - час в 12-часовом формате (от 01 до 12)
% j - день года (с 001 по 366)
% m - месяц (с 01 по 12)
% M - минута
% n - символ новой строки
% p - либо am, либо pm согласно заданному значению времени
% r - время до и после полудня. обозначение
% R - время в 24-часовом формате
% S - второй
% t - символ табуляции
% T - текущее время, равное% H:% M:% S
% u - день недели в виде числа (от 1 до 7), понедельник = 1. Предупреждение: в воскресенье Sun Solaris = 1
% U - номер недели текущего года, начиная с первого воскресенья как первого дня первой недели
% V - номер недели текущего года по ISO 8601 (от 01 до 53), где неделя 1 - это первая неделя, которая имеет не менее 4 дней в текущем году, а понедельник - первый день недели.
% W - номер недели текущего года, начиная с первого понедельника как первый день первой недели
% w - день недели в десятичном формате, воскресенье = 0
% x - предпочтительное представление даты без времени
% X - предпочтительное представление времени без даты
% y - год без века (диапазон от 00 до 99)
% Y - год, включая век
% Z или% z - часовой пояс или название или аббревиатура
%% - буквальный символ%
Вы можете сделать это с помощью регулярного выражения или одной из утилит даты, чтобы проанализировать его для вас