int() and leading zeros in Python 2.6

Peter Otten __peter__ at web.de
Wed Nov 12 07:53:25 EST 2008


Pete Forman wrote:

> I'm holding off installing Python 2.6, waiting for some packages to
> become available for it.  I wonder if someone could tell me the best
> way to avoid future problems parsing decimal integers with leading
> zeros.

You can have multiple versions of python simultaneously.
 
>>>> int('09')
> 9

This works for 2.x and 3.0.

2.6 will accept two prefixes "0o" and "0" when you give 0 as the radix
argument. 3.0 will only accept "0o" and raise a ValueError for "0". None of
this affects you.
 
> That works in 2.5 but will break in 2.6 AFAIK as int() is being
> changed to use Numeric Literal syntax.  It will give a syntax error as
> the leading 0 will force an octal radix and the 9 will be out of
> range.  Will this avoid the breakage?
> 
>>>> int('09', 10)
> 9

That's unnecessary.

> Or should I use this uglier variation that needs 2.2.2 or later?
> 
>>>> int('09'.lstrip('0'))
> 9

And that's cargo cult code.

> Is the documentation for int([x[, radix]]) correct?  

Yes.

> I'd say that the default for radix has become 0.

You can say that, but you're wrong. 

Peter




More information about the Python-list mailing list