在Perl中,我可以做到:
my ($x, $y) = split /:/, $str;
不管字符串是否包含模式,它都会起作用.
但在Python中,这是行不通的:
a, b = "foo".split(":") # ValueError: not enough values to unpack
在这种情况下,防止错误的标准方法是什么?
在Perl中,我可以做到:
my ($x, $y) = split /:/, $str;
不管字符串是否包含模式,它都会起作用.
但在Python中,这是行不通的:
a, b = "foo".split(":") # ValueError: not enough values to unpack
在这种情况下,防止错误的标准方法是什么?
如果你只分为两部分(就像你的例子中那样),你可以用str.partition()
来得到一个保证的参数解包大小为3:
>>> a, sep, b = 'foo'.partition(':')
>>> a, sep, b
('foo', '', '')
str.partition()
始终返回一个3元组,无论是否找到分隔符.
Python 3的另一种 Select .x使用extended iterable unpacking:
>>> a, *b = 'foo'.split(':')
>>> a, b
('foo', [])
这会将第一个拆分项目分配给a
,将剩余项目列表(如果有)分配给b
.