1

下面的代码显然是多余的,但根据我的经验,我经常使用这种模式。在python中有没有更好的方法来做到这一点?

if re.search("at (\d{1,2}):\d{2}", p):
    a=re.search("at (\d{1,2}):\d{2}",p).group(1)
4

2 回答 2

6

是的,它是多余的;您应该将结果分配search()给一个变量,而不是调用它两次:

m = re.search("at (\d{1,2}):\d{2}", p)

if m:
    a = m.group(1)

或者可能

a = m.group(1) if m else some_default_value

此外,如果您要经常使用此模式,请考虑使用re.compile()预编译正则表达式。

于 2013-09-05T00:13:47.220 回答
1

保存第一次搜索并检查其布尔含义:

res = re.search (...)
if res:
   a = res.group (1)
于 2013-09-05T00:15:47.730 回答