word to digit module
Scott David Daniels
Scott.Daniels at Acm.Org
Wed Dec 22 14:41:26 EST 2004
John Machin wrote:
> Stephen Thorne wrote:
> .def toNumber2(s):
> . items = s.replace(',', '').split()
> . numbers = [translation.get(item.strip(), -1) for item in items if
> item.strip()]
> . stack = [0]
> . for num in numbers:
> . if num == -1:
> . raise ValueError("Invalid string '%s'" % (s,))
> . if num >= 100:
> . stack[-1] *= num
> . if num >= 1000:
> . stack.append(0)
> . else:
> . stack[-1] += num
> . return sum(stack)
>
Can I play too?
Let's replace the top with some little bit of error handling:
def toNumber3(text):
s = text.replace(',', '').replace('-', '')# for twenty-three
items = s.split()
try:
numbers = [translation[item] for item in items]
except KeyError, e:
raise ValueError, "Invalid element %r in string %r" % (
e.args[0], text)
stack = [0]
for num in numbers:
if num >= 100:
stack[-1] *= num
if num >= 1000:
stack.append(0)
else:
stack[-1] += num
return sum(stack)
--Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list