[Python-ideas] String Subtraction

Dj Gilcrease digitalxero at gmail.com
Fri Oct 15 05:22:59 CEST 2010


On Thu, Oct 14, 2010 at 7:45 PM, Bruce Leban <bruce at leapyear.org> wrote:
> Here's a useful function along these lines, which ideally would be
> string.remove():
> def remove(s, sub, maxremove=None, sep=None):
>   """Removes instances of sub from the string.
>   Args:
>     s: The string to be modified.
>     sub: The substring to be removed.
>     maxremove: If specified, the maximum number of instances to be
>         removed (starting from the left). If omitted, removes all instances.
>     sep: Optionally, the separators to be removed. If the separator appears
>         on both sides of a removed substring, one of the separators is
> removed.
>   >>> remove('test,blah,blah,blah,this', 'blah')
>   'test,,,,this'
>   >>> remove('test,blah,blah,blah,this', 'blah', maxremove=2)
>   'test,,,blah,this'
>   >>> remove('test,blah,blah,blah,this', 'blah', sep=',')
>   'test,this'
>   >>> remove('test,blah,blah,blah,this', 'blah', maxremove=2, sep=',')
>   'test,blah,this'
>   >>> remove('foo(1)blah(2)blah(3)bar', 'blah', 1)
>   'foo(1)(2)blah(3)bar'
>   """

Could be written as

def remove(string, sub, max_remove=-1, sep=None):
    if sep:
        sub = sub + sep
    return string.replace(sub, '', max_remove)

t = 'test,blah,blah,blah,this'
print(remove(t, 'blah'))
print(remove(t, 'blah', 2))
print(remove(t, 'blah', sep=','))
print(remove(t, 'blah', 2, ','))
print(remove('foo(1)blah(2)blah(3)bar', 'blah', 1))


Dj Gilcrease
 ____
( |     \  o    ()   |  o  |`|
  |      |      /`\_/|      | |   ,__   ,_,   ,_,   __,    ,   ,_,
_|      | |    /      |  |   |/   /      /   |   |_/  /    |   / \_|_/
(/\___/  |/  /(__,/  |_/|__/\___/    |_/|__/\__/|_/\,/  |__/
         /|
         \|



More information about the Python-ideas mailing list