1

我以这种方式编写代码,我想将匹配的值分配给 'm' 但 lst[1] 可能不包括我想要的 pat。如果是这样,那么我会继续对“m”做一些事情,例如:m.group(2).split() ....

  if re.match(pat, lst[1]):
       m=re.match(pat, lst[1])

但我不想重复 re.match(pat, lst[1]) 两次。

我想以这种方式实现

  if m = re.match(pat, lst[i])

但它向我显示“无效的语法错误。有什么想法吗?

4

2 回答 2

4

只需预先分配值并检查它是否为无:

m = re.match(pat,lst[1])
if not m:
  del m
于 2013-08-29T11:05:44.857 回答
0

你可以滥用for你的任务。

def for_if(expression):
    if expression:
        yield expression

for m in for_if(re.match(pat, lst[1])):
    # work with m

要不就

for m in (i for i in (re.match(pat, lst[1]),) if i):
    # do the same

这对可读性并没有真正的帮助,但这是结合作业和测试的唯一方法。

于 2013-08-29T15:03:15.120 回答