There's got to be an easy way to do this
Remco Gerlich
scarblac at pino.selwerd.nl
Fri Jul 6 02:14:38 EDT 2001
Lindstrom Greg - glinds <Greg.Lindstrom at acxiom.com> wrote in comp.lang.python:
> I am reading in a phone number field and would like to throw away everything
> except the digits. Being an old C programmer, I know how I would do this.
> Even with my limited knowledge of Python, I know how I would do it:
>
> stripped_phone=''
> for c in phone_number:
> if c in digits:
> stripped_phone += c
>
> but with all of the data structure support native to Python, I'm sure there
> is "an obvious way" to do it (perhaps it's because I'm not Dutch:-).
Some other solutions:
# Closest to yours, readable
stripped_phone = ''
for c in phone_number:
if c.isdigit():
stripped_phone += c
# The same with filter, too bad we need a lambda
stripped_phone = filter(lambda c: c.isdigit(), phone_number)
# Translate might be fast, but not very readable (only the last line needs to
# be inside a tight loop)
import string
transtable = string.maketrans("","")
nodigit = filter(lambda c: not c.isdigit(), transtable)
stripped_phone = phone_number.translate(transtable, nodigit)
The last one might be fastest inside a tight loop, or maybe the re solution
someone else gave.
However, if your code isn't a speed problem, just leave it.
Funny, I think there's one obvious way to do this in Perl :-)
($x =~ s/[^0-9]//g)
--
Remco Gerlich
More information about the Python-list
mailing list