stripping a string

Peter Otten __peter__ at web.de
Mon Sep 15 18:21:49 CEST 2003


Tim Williams wrote:

> Jeff Epler <jepler at unpythonic.net> wrote in message
> news:<mailman.1063499902.1786.python-list at python.org>...
>> If you want to remove all digits from the string, then use
>> str.translate, not regular expressions:
>>     import string
>>     identity_transformation = string.maketrans('', '')
>> 
>>     def remove_digits(s):
>> return s.translate(identity_transformation, string.digits)
>> 
>> >>> s = 'ANL LN32'
>> >>> remove_digits(s)
>> 'ANL LN'
>> 
>> If you want to remove digits from the end of the string, then use
>> str.strip(), not a regular expression:
>> >>> s.rstrip(string.digits)
>> 'ANL LN'
>> 
>> Jeff
> 
> I don't understand. What's wrong with
> 
>>>> import re
>>>> s = 'ANL LN32'
>>>> s=re.sub('[0-9]', '', s)
>>>> print s
> ANL LN

Nothing is *wrong*, but

>>> import re
>>> s = 'AN21 LN32'
>>> print re.sub('[0-9]', '', s)
AN LN

whereas

>>> import string
>>> print s.rstrip(string.digits)
AN21 LN

is *different*.

translate() gives the same result as re.sub(), but should be much faster
(haven't timed it though).

Peter





More information about the Python-list mailing list