检查python中的字符串格式

时间:2018-04-13 04:51:32

标签: python regex python-3.x

如何检查进入函数的字符串格式是否正确?正确的格式是" 8:30:00"或" 16:00:00"

类似的东西:

string_format = "%h%m%s"

if input_data == string_format:
    do this 
else:
    error 

2 个答案:

答案 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