【发布时间】:2019-01-31 21:17:43
【问题描述】:
import re; print(re.findall("(.*) (.*)", "john smith")) 行输出[("john", "smith")],可以像[(first_name, last_name)] = re.findall(...) 一样解包。但是,在不匹配的情况下(findall 返回[]),此解包将引发ValueError: not enough values to unpack (expected 1, got 0)。
安全地解压这个元组数组的正确方法是什么,它适用于匹配 ([("john", "smith")]) 和不匹配 ([]) 场景?
【问题讨论】:
-
if result: # unpacking code -
findall在您只期望(并且只能处理)一场比赛时是一个奇怪的选择。 -
@user2357112 我选择了它,因为它是可迭代的,而
search不是 -
@user2357112 谢谢,这更有意义。我希望能够做类似
first,last = re.search(r"(.*) (.*)", "john smith").groups(default=[None, None])之类的事情(由于search返回None而导致的不匹配场景错误)
标签: python python-3.x tuples iterable-unpacking