Inconsistency with split() - Script, OS, or Package Problem?

Steven D'Aprano steve+comp.lang.python at pearwood.info
Mon May 9 14:43:09 EDT 2011


On Mon, 09 May 2011 14:10:21 -0400, James Wright wrote:

> Hello,
> 
> I have been using a script on several boxes that have been around for a
> while, and everything works just fine.  I am finding though, that on
> some new OS installs the script fails with:
> 
> Traceback (most recent call last):
>   File "render4.py", line 114, in <module>
>     create_report_index(each_item)
>   File "render4.py", line 25, in create_report_index
>     [clean_name, _] = each_value.split('_', 1)
> ValueError: need more than 1 value to unpack

It's a data issue, not an OS or package problem.

Firstly, you don't have to wrap the left hand side in brackets, this 
works fine:

>>> each_value = "aaa_bbb_ccc"
>>> clean_name, _ = each_value.split('_', 1)
>>> clean_name
'aaa'


However, if your data has no underscore at all:

>>> each_value = "aaa*bbb*ccc"
>>> clean_name, _ = each_value.split('_', 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack



So you need to allow for the possibility that there is no underscore.




-- 
Steven



More information about the Python-list mailing list