There's got to be an easy way to do this
scarblac at pino.selwerd.nl
Fri Jul 6 08:14:38 CEST 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:
> 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:
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)
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)
More information about the Python-list