[Python-Dev] str.strip() enhancement

Jonny Reichwald kalinda at acc.umu.se
Sat Sep 3 22:36:07 CEST 2005


I would like to suggest a small enhancement to str.strip().
By expanding its current form, where it only takes a char list, to  
taking any list containing either char lists or string lists, it is  
possible to remove entire words from the stripped string.

To clarify what I mean, here are some examples, first argument string  
to be stripped, second argument a list of things to strip:

#A char list gives the same result as the standard strip
 >>> my_strip("abcdeed", "de")

#A list of strings instead
 >>> my_strip("abcdeed", ("ed",))

#The char order in the strings to be stripped are of importance
 >>> my_strip("abcdeed", ("ad", "eb"))

Functions used in the above examples:

def my_lstrip(str, list):
         ret_str = str[max([k == True and len(v) for (k,v) in zip 
([str.startswith(e) for e in list], list)]):]
         if ret_str != str:
                 return my_lstrip(ret_str, list)
         return str

def my_rstrip(str, list):
         ret_str = str[:len(str)-max([k == True and len(v) for (k,v)  
in zip([str.endswith(e) for e in list], list)])]
         if ret_str != str and ret_str != False:
                 return my_rstrip(ret_str, list)
         return str

def my_strip(str, list):
         return my_lstrip(my_rstrip(str, list), list)

Would this be useful for anyone else besides me?

Jonny Reichwald

More information about the Python-Dev mailing list