I'm Sure There's A Better Way
Neil Macneale
mac4-devnull at theory.org
Fri Jul 6 22:40:45 EDT 2001
Note: this sollution requires 2 characters after the decimal point....
def isDollarAmount(s):
try:
if s.count == 1 and s[-3] == '.':
dol, cen = s.split('.')
int(dol)
int(cen)
return 1
int(s)
return 1
except:
return None
The idea is that if the int function can't convert to a number, then the
string is no good.
Hope that helps, Neil Macneale
In article <3B465858.CB7F38E8 at tundraware.com>, "Tim Daneliuk"
<tundra at tundraware.com> wrote:
> I want a function to check a string to make sure it is a legitimate
> dollar amount. Which means it follows these rules:
>
> First character is numeric or "-"
> At most, one "." is allowed and, if present, is followed by exactly two
> digits All the remaining characters must be in the range "0" - "9"
>
>
> I wrote the attached to check a string for these rules, but I can't help
> wondering if my feeble newbie python coding isn't already better done
> elswhere and/or using existing logic. Any ideas all? TIA.... Code
> follows -
>
>
>
> # Check and see if passed string is a legit amount
>
> def IsNum(num):
> if num == "":
> return FALSE
> digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."] z =
> num.split(".")
> if len(z) > 2: # At Most, only once decimal permitted.
> return FALSE
> if len(z) == 2:
> if len(z[1]) != 2: # Exactly two digits must follow decimal
> return FALSE
> if (num[0] == '-') and (len(num) > 1): # 1st char can be sign if
> more chars follow
> num = num[1:] # Drop sign for purposes of checking
> for x in num: # Make sure all chars are legit digits
> if not digits.count(x):
> return FALSE
> return TRUE
>
--
--
To reply to me via email, remove the '-devnull' from my address.
More information about the Python-list
mailing list