strings

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

    strings

    Hi
    Somewhat new to Python and would appreciated some help in selecting the
    best builtins to achieve what I want.
    I pass a string to a function, it is either
    empty
    spaces
    alpha and digits
    or
    a decimal ie. 5,789.88
    if it is a decimal I want to return the number without the commer any
    others return 0.
    Should be simple or maybe I am.
    Any help apreciated.

  • Peter Otten

    #2
    Re: strings

    Scribe wrote:
    [color=blue]
    > Hi
    > Somewhat new to Python and would appreciated some help in selecting the
    > best builtins to achieve what I want.
    > I pass a string to a function, it is either
    > empty
    > spaces
    > alpha and digits
    > or
    > a decimal ie. 5,789.88
    > if it is a decimal I want to return the number without the commer any
    > others return 0.
    > Should be simple or maybe I am.
    > Any help apreciated.[/color]

    import locale

    locale.setlocal e(locale.LC_ALL , ("en", None))

    def strtofloat(s):
    try:
    return locale.atof(s)
    #return float(s.replace (",", ""))
    except ValueError:
    return 0.0


    for s in "a 0 12 123.4 12,345.67 12,24a".split() :
    print s, "->", strtofloat(s)

    Output:
    a -> 0.0
    0 -> 0.0
    12 -> 12.0
    123.4 -> 123.4
    12,345.67 -> 12345.67
    12,24a -> 0.0

    Peter

    Comment

    • Alex Martelli

      #3
      Re: strings

      Scribe wrote:
      [color=blue]
      > Hi
      > Somewhat new to Python and would appreciated some help in selecting the
      > best builtins to achieve what I want.
      > I pass a string to a function, it is either
      > empty
      > spaces
      > alpha and digits
      > or
      > a decimal ie. 5,789.88
      > if it is a decimal I want to return the number without the commer any
      > others return 0.
      > Should be simple or maybe I am.
      > Any help apreciated.[/color]

      def scribefun(astri ng):
      try: return int(float(astri ng.replace(',', '')))
      except ValueError: return 0

      This assumes you want to return e.g. 5789 for '5,789.88', i.e.,
      an integer truncating the "decimal" (otherwise omit the int()).

      Only possible issue is if the "alpha and digits" specifically
      include an 'e' as the only "alpha", which builtin float() would
      take as an indication of exponential notation; so for example
      this would return 100, not 0, for '1e2'. If this is a problem
      (unclear from your specs) it ain't all that hard to fix of course.


      Alex

      Comment

      • Nick Welch

        #4
        Re: strings

        On Thu, Sep 04, 2003 at 04:18:38AM +0000, Scribe wrote:[color=blue]
        > if it is a decimal I want to return the number without the commer any
        > others return 0.[/color]

        "commer"?

        str.isdigit() should do most of it for you.

        def foo(mystr):
        if mystr.isdigit() :
        return "the number without the commer (??) :)"
        else:
        return 0

        --
        Nick Welch aka mackstann | mack @ incise.org | http://incise.org
        Penguin Trivia #46:
        Animals who are not penguins can only wish they were.
        -- Chicago Reader 10/15/82

        Comment

        Working...