[issue33647] Add re.replace(string, replacement_map)

Paal Pedersen report at bugs.python.org
Sat May 26 07:01:36 EDT 2018


Paal Pedersen <paalped at gmail.com> added the comment:

I forgot to put the ** in the input.

This is to further explain what I had in mind:

"""The meaning of this file is to show how the replace function can be
enhanced"""

# Today the replace api takes at most 3 arguments, old_string,
new_string, and optional numbers_of_replacements
# My wish is to update the replace to support a fourth optional
**kwargs argument

class Str(object):
    def __init__(self, s=''):
        self.original_str = s
        self.new_str = s
    # name replace2 is to not cause recursion of my function
    def replace2(self, *args, **kwargs):
        # Old api lives here ...
        if len(args) == 2:
            old_str, new_str = args
            # do the old stuff
        elif len(args) == 3:
            old_str, new_str, numbers_of_replacements = args
            #do the old stuff
        # new api begins
        if kwargs:
            for k, v in kwargs.items():
                # this one relies on the old api from string object
                # str original function must differ
                self.new_str = self.new_str.replace(k, v)
            return self.new_str

    def __str__(self):
        return self.original_str

s = Str('my string is not cool')

replacement_dict = {'is': 'could',
            'my': 'your',
            'not': 'be',
            'cool': 'awsome'}

print(s)
s2 = s.replace2(**replacement_dict)
print(s, s2, sep='\n')

If this is a really crappy though, I would like not to be made a fool out
of. I only want to improve, and I'm not crtizing the old api. I just want a
simplier life for everyone :)

Paal

lør. 26. mai 2018 kl. 02:21 skrev Raymond Hettinger <report at bugs.python.org
>:

>
> Raymond Hettinger <raymond.hettinger at gmail.com> added the comment:
>
> > I would like an example added to the sub(pattern, function,
> > string) examples.
>
> That seems like the most reasonable way to go.
>
> ----------
> nosy: +rhettinger
>
> _______________________________________
> Python tracker <report at bugs.python.org>
> <https://bugs.python.org/issue33647>
> _______________________________________
>

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue33647>
_______________________________________


More information about the Python-bugs-list mailing list