Negative integers and string formating

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Steven D'Aprano

    #1

    Negative integers and string formating

    Problem: I have an application where I need to print integers differently
    depending on whether they are positive or negative. To be more specific, I
    have to print something that looks like:

    "something + 1"
    "something - 1"

    Note the space between the sign and the number. If I didn't need that
    space, I would have no problem. Yes, I do need that space.

    I build the format string on the fly, then pass it to another function
    which actually fills in the values. Simplified example:

    def format(n):
    if n 0:
    return "something positive + %(argument)d"
    # real code has a good half-dozen named keys
    elif n < 0:
    return "something negative - %(argument)d"
    else:
    return "blank"

    def display(**kwarg s):
    fs = format(kwargs['argument'])
    return fs % kwargs



    This works fine for positive and zero values:
    >>display(argum ent=0)
    'blank'
    >>display(argum ent=1)
    'something positive + 1'

    but not for negative, due to the extra negative sign:
    >>display(argum ent=-1)
    'something negative - -1'

    Are there any string formatting codes that will place a space between the
    sign and the number?



    --
    Steven

  • Brett Hoerner

    #2
    Re: Negative integers and string formating

    Steven D'Aprano wrote:
    Are there any string formatting codes that will place a space between the
    sign and the number?
    Not that I know of, why not use the absolute value (after checking if
    it is negative),

    In [1]: abs(-1)
    Out[1]: 1

    Comment

    • Paul Rubin

      #3
      Re: Negative integers and string formating

      Steven D'Aprano <steve@REMOVEME .cybersource.co m.auwrites:
      def display(**kwarg s):
      fs = format(kwargs['argument'])
      return fs % kwargs
      def display(**kwarg s):
      fs = format(kwargs['argument'])
      return fs % dict((x, abs(y)) for x,y in kwargs.iteritem s())

      Comment

      • Steven D'Aprano

        #4
        Re: Negative integers and string formating

        On Mon, 23 Oct 2006 18:56:21 -0700, Paul Rubin wrote:
        Steven D'Aprano <steve@REMOVEME .cybersource.co m.auwrites:
        >def display(**kwarg s):
        > fs = format(kwargs['argument'])
        > return fs % kwargs
        >
        def display(**kwarg s):
        fs = format(kwargs['argument'])
        return fs % dict((x, abs(y)) for x,y in kwargs.iteritem s())
        That will do it! Thanks,

        --
        Steven

        Comment

        Working...