I have the following:
>>> myString = "has spaces"
>>> first, second = myString.split()
>>> myString = "doesNotHaveSpaces"
>>> first, second = myString.split()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
I would like to have second
default to None
if the string does not have any white space. I currently have the following, but am wondering if it can be done in one line:
splitted = myString.split(maxsplit=1)
first = splitted[0]
second = splitted[1:] or None
Here's one general solution to unpack tuple and use default value if tuple is shorter than expected:
Play with this code
You could try this:
May I suggest you to consider using a different method, i.e.
partition
instead ofsplit
:If you are on python3, you have this option available:
A general solution would be to
chain
your iterable with arepeat
ofNone
values and then use anislice
of the result:this would fill in missing values with
None
, if you need this kind of functionality a lot you can put it into a function like this:Although the most common use is by far for strings which is why
str.partition
exists.