我正在寻找一个数字,可以出现在两个不同的模式。这些模式在单个字符串中是互斥的,因为它们具有相同的含义,所以我想将结果组合成一个变量。你知道吗
abc: DIGIT
或DIGIT-xyz
创建模式本身不是问题,但我不知道如何正确返回匹配的组(数字)。你知道吗
text = 'lorem ipsum abc: 3 lorem ipsum'
my_pattern = re.compile("(abc:\s+(\d)|(\d)-xyz)")
result = re.search(my_pattern, text)
if result:
if result.group(2):
return result.group(2)
else:
return result.group(3)
# returns 3
这个解决方案很好,但是如果有两个以上的替代方案呢?有没有比写多个条件语句更优雅的方法?你知道吗
考虑使用中断语句。
通常最好的做法是避免它(通过向
while
表达式添加一个条件),但如果您想过早结束循环,可以使用break;
下面是一个简单的例子:
假设特殊情况发生在
i
刚变成3
时,输出为:注意
break
如何终止循环。它可以用于所有类型的循环(do..while
,while
,以及两种类型的for
)如果您有嵌套循环,并且需要将外部循环与内部循环分开,那么您可能应该将代码重构为子方法。但是,如果不想重构,可以使用定向的
break
:在那里,
outerLoop
标记外循环,break outerLoop
导致内循环和外循环终止。不过,如果你开始这么做,可能是时候重构了来自JLS的更多信息:http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.15
相关问题 更多 >
编程相关推荐