如何检查进入函数的字符串格式是否正确?正确的格式是" 8:30:00"或" 16:00:00"
类似的东西:
string_format = "%h%m%s"
if input_data == string_format:
do this
else:
error
答案 0 :(得分:2)
您可以在不使用正则表达式的情况下执行此操作。 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 - 与ISO周数相对应的4位数年份(见%V)。
%h - 与%b
%H - 小时,使用24小时制(00至23)
%I - 小时,使用12小时制(01至12)
%j - 一年中的某一天(001至366)
%m - 月(01至12)
%M - 分钟
%n - 换行符
%p - 根据给定的时间值上午或下午
%r - 上午和下午的时间符号
%R - 24小时表示法中的时间
%S - 秒
%t - 制表符
%T - 当前时间,等于%H:%M:%S
%u - 工作日作为数字(1到7),星期一= 1。警告:在Sun Solaris Sunday = 1
%U - 当前年份的周数,从第一个星期日开始,作为第一周的第一天
%V - 当前年份的ISO 8601周数(01至53),其中第1周是当年至少有4天的第一周,而周一是第一周
%W - 当前年份的周数,从第一个星期一开始 作为第一周的第一天
%w - 星期几作为小数,星期日= 0
%x - 没有时间的首选日期表示
%X - 没有日期的首选时间表示
%y - 没有世纪的年份(范围00到99)
%Y - 包括世纪的年份
%Z或%z - 时区或名称或缩写
%% - 文字%字符
答案 1 :(得分:1)
您可以使用正则表达式匹配格式,然后根据是否找到匹配项采取措施。为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