检查Python字符串格式?

15

我有一堆字符串,但我只想保留这种格式的字符串:

x/x/xxxx xx:xx

最简单的方法是什么来检查一个字符串是否符合这种格式?(假设我想通过它是否有2个 / 和一个 : 来检查)


8
最简单的方法是将其转换为日期时间格式,并在无法成功转换时捕获错误。这是一个日期时间类型,对吧? - Ben
3个回答

29

尝试使用正则表达式:

import re
r = re.compile('.*/.*/.*:.*')
if r.match('x/x/xxxx xx:xx') is not None:
   print 'matches'

您可以微调表达式以适应您的需求。


1
事实上,像 'xxxxx/xxxxx/x 124453:24345' 这样的内容也会匹配。使用正则表达式 ././.{4} .{2}:.{2} 来匹配任意字符。如果只想匹配数字,则使用 \d/\d/\d{4} \d{2}:\d{2} - TyrantWave
没错,但原帖说:假设我想检查它是否有2个/和一个':'。这个例子看起来像是日期格式,但它真的是日期吗? - kofemann
他还给出了他想要保留的格式,看起来就像日期时间格式 - 我个人认为需要完全按照该格式执行。 - TyrantWave

10

使用time.strptime将字符串解析为时间结构。如果字符串与格式不匹配,则引发ValueError


8
如果你在使用match时使用正则表达式,你也必须考虑结束位置过长的情况。如果没有在代码中对长度进行测试,可能会导致末尾出现任何非换行符的字符。以下是从其他答案修改的代码。
import re
r = re.compile('././.{4} .{2}:.{2}')
s = 'x/x/xxxx xx:xx'
if len(s) == 14:
  if r.match(s):
    print 'matches'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接