7
votes

Vérification du format du temps Python

à Python, je veux vérifier si la chaîne d'entrée est dans "HH: mm" telle que 01:16 ou 23:16 ou 24:00. Donner vrai ou faux par le résultat.

Comment puis-je y parvenir en utilisant une expression régulière?


3 commentaires

Voulez-vous "deux chiffres, deux points, deux chiffres" ou voulez-vous vérifier si c'est une valeur de temps légale?


Strictement parlant '24: 00 'n'est pas une chaîne «HH: MM» valide. '00: 00 '23: 59 'sont.


Minuit est un cas particulier et peut être appelé "00:00" et "24h00". La notation "00:00" est utilisée au début d'une journée de calendrier et est le plus fréquemment utilisé. ISO 8601


4 Réponses :


28
votes

Vous pouvez y parvenir sans expressions régulières:

import time

def isTimeFormat(input):
    try:
        time.strptime(input, '%H:%M')
        return True
    except ValueError:
        return False

>>>isTimeFormat('12:12')
True

>>>isTimeFormat('012:12')
False


1 commentaires

isTimeformat ("12: 0") retourne vrai . Pas ce que je veux.



3
votes

Cela vous donnera l'objet Regexp qui le vérifiera. Cependant, en fonction de qui vous demandez 24h00 pourrait ne pas être une heure valide (c'est 00:00). Mais je suppose que cela est facile à modifier pour répondre à vos besoins.

import re
regexp = re.compile("(24:00|2[0-3]:[0-5][0-9]|[0-1][0-9]:[0-5][0-9])")


0 commentaires

3
votes
import re

time_re = re.compile(r'^(([01]\d|2[0-3]):([0-5]\d)|24:00)$')
def is_time_format(s):
    return bool(time_re.match(s))
Matches everything from 00:00 to 24:00.

0 commentaires

3
votes

0 commentaires