3 回答
TA贡献1820条经验 获得超2个赞
一般的答案是在跳之前先看看:
if result:
[(first_name, last_name)] = result
或请求原谅:
try:
[(first_name, last_name)] = result
except ValueError:
pass
但是您实际上通过使用re.findall()来查找单个结果使事情变得过于复杂。使用re.seach()并提取您的匹配组:
match = re.search("(.*) (.*)", value)
if match:
firstname, lastname = match.groups()
或者
try:
firstname, lastname = re.search("(.*) (.*)", value).groups()
except AttributeError:
# An attribute error is raised when `re.search()` returned None
pass
TA贡献1825条经验 获得超4个赞
一般的答案是在跳之前先看看:
if result:
[(first_name, last_name)] = result
或请求原谅:
try:
[(first_name, last_name)] = result
except ValueError:
pass
但是您实际上通过使用re.findall()来查找单个结果使事情变得过于复杂。使用re.seach()并提取您的匹配组:
match = re.search("(.*) (.*)", value)
if match:
firstname, lastname = match.groups()
或者
try:
firstname, lastname = re.search("(.*) (.*)", value).groups()
except AttributeError:
# An attribute error is raised when `re.search()` returned None
pass
TA贡献1821条经验 获得超4个赞
由于re.findall
回报不匹配的情况下,空列表,你可以使用or
运营商默认值分配给first_name
和last_name
替代:
[(first_name, last_name)] = re.findall("(.*) (.*)", "johnsmith") or [(None, None)]
添加回答
举报