2009-08-24 7 views
6

pythonでは、入力文字列が01:16や23:16や24:00などの "HH:MM"であるかどうかをチェックしたいと思います。その結果によって真実または偽を与える。python time format check

正規表現を使用してこれを実現するにはどうすればよいですか?

+0

あなたが欲しい「2桁、コロン、2桁」、またはあなたはそれが実際に法的な時刻値だかどうかを確認したいですか? – balpha

+0

厳密に言えば、 '24:00'は有効な 'HH:MM'文字列ではありません。 '00:00 'から'23:59'までです。 –

+0

真夜中は特殊なケースで、「00:00」と「24:00」の両方と呼ばれることがあります。表記「00:00」は暦日の初めに使用され、より頻繁に使用されます。 [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) –

答えて

18

あなたは正規表現せずにこれを達成することができます

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 
+0

本当にとても役に立ちました。ありがとう! – jambox

1

これはあなたにそれをチェックする正規表現オブジェクトを提供します。しかし、あなたが24:00を聞く人によっては、有効な時間ではないかもしれません(それは00:00です)。しかし、私はあなたのニーズに合わせて変更するのは簡単だと思います。

import re 
regexp = re.compile("(24:00|2[0-3]:[0-5][0-9]|[0-1][0-9]:[0-5][0-9])") 
3
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)) 

00:00から24:00までのすべてにマッチします。