Jim Garrison wrote:
Use case: parsing a simple config file line where lines start with a
keyword and have optional arguments. I want to extract the keyword and
then pass the rest of the line to a function to process it. An obvious
use of split(None,1)
cmd,args= = line.split(None,1);
if cmd in self.switch: self.switch[cmd](self,args)
else: self.errors.append("unrecognized keyword '{0)'".format(cmd))
Here's a test in IDLE:
>>> a="now is the time"
>>> x,y=a.split(None,1)
>>> x
'now'
>>> y
'is the time'
However, if the optional argument string is missing:
>>> a="now"
>>> x,y=a.split(None,1)
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
x,y=a.split(None,1)
ValueError: need more than 1 value to unpack
I understand the problem is not with split() but with the assignment
to a tuple. Is there a way to get the assignment to default the
missing values to None?
In 3.0 (and 2.6?), the following is close:
>>> a,*b = (1,2)
>>> a,b
(1, [2])
>>> a,*b = (1,)
>>> a,b
(1, [])
--
http://mail.python.org/mailman/listinfo/python-list