int() and leading zeros in Python 2.6

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Pete Forman

    int() and leading zeros in Python 2.6

    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'.lstr ip('0'))
    9

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

    The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...


    --
    Pete Forman -./\.- Disclaimer: This post is originated
    WesternGeco -./\.- by myself and does not represent
    pete.forman@wes terngeco.com -./\.- the opinion of Schlumberger or
    http://petef.22web.net -./\.- WesternGeco.
  • Peter Otten

    #2
    Re: int() and leading zeros in Python 2.6

    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'.lst rip('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

    Comment

    • Pete Forman

      #3
      Re: int() and leading zeros in Python 2.6

      Peter Otten <__peter__@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
      pete.forman@wes terngeco.com -./\.- the opinion of Schlumberger or
      http://petef.22web.net -./\.- WesternGeco.

      Comment

      Working...