By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,404 Members | 1,074 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,404 IT Pros & Developers. It's quick & easy.

int() and leading zeros in Python 2.6

P: n/a
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.
>>int('09')
9

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

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

Is the documentation for int([x[, radix]]) correct? I'd say that the
default for radix has become 0.

http://docs.python.org/library/functions.html#int

--
Pete Forman -./\.- Disclaimer: This post is originated
WesternGeco -./\.- by myself and does not represent
pe*********@westerngeco.com -./\.- the opinion of Schlumberger or
http://petef.22web.net -./\.- WesternGeco.
Nov 12 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
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

Nov 12 '08 #2

P: n/a
Peter Otten <__*******@web.dewrites:
you're wrong.
Indeed I am, sorry for the waste of time.
--
Pete Forman -./\.- Disclaimer: This post is originated
WesternGeco -./\.- by myself and does not represent
pe*********@westerngeco.com -./\.- the opinion of Schlumberger or
http://petef.22web.net -./\.- WesternGeco.
Nov 12 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.