polars.Series.str.replace_many#

Series.str.replace_many(patterns: Series | list[str] | Mapping[str, str], replace_with: Series | list[str] | str | NoDefault = <no_default>, *, ascii_case_insensitive: bool = False) Series[source]#

Use the Aho-Corasick algorithm to replace many matches.

Parameters:
patterns

String patterns to search and replace. Also accepts a mapping of patterns to their replacement as syntactic sugar for replace_many(pl.Series(mapping.keys()), pl.Series(mapping.values())).

replace_with

Strings to replace where a pattern was a match. Length must match the length of patterns or have length 1. This can be broadcasted, so it supports many:one and many:many.

ascii_case_insensitive

Enable ASCII-aware case-insensitive matching. When this option is enabled, searching will be performed without respect to case for ASCII letters (a-z and A-Z) only.

Notes

This method supports matching on string literals only, and does not support regular expression matching.

Examples

Replace many patterns by passing lists of equal length to the patterns and replace_with parameters.

>>> _ = pl.Config.set_fmt_str_lengths(100)
>>> s = pl.Series(
...     "lyrics",
...     [
...         "Everybody wants to rule the world",
...         "Tell me what you want, what you really really want",
...         "Can you feel the love tonight",
...     ],
... )
>>> s.str.replace_many(["you", "me"], ["me", "you"])
shape: (3,)
Series: 'lyrics' [str]
[
    "Everybody wants to rule the world"
    "Tell you what me want, what me really really want"
    "Can me feel the love tonight"
]

Broadcast a replacement for many patterns by passing a string or a sequence of length 1 to the replace_with parameter.

>>> _ = pl.Config.set_fmt_str_lengths(100)
>>> s = pl.Series(
...     "lyrics",
...     [
...         "Everybody wants to rule the world",
...         "Tell me what you want, what you really really want",
...         "Can you feel the love tonight",
...     ],
... )
>>> s.str.replace_many(["me", "you", "they"], "")
shape: (3,)
Series: 'lyrics' [str]
[
    "Everybody wants to rule the world"
    "Tell  what  want, what  really really want"
    "Can  feel the love tonight"
]

Passing a mapping with patterns and replacements is also supported as syntactic sugar.

>>> _ = pl.Config.set_fmt_str_lengths(100)
>>> s = pl.Series(
...     "lyrics",
...     [
...         "Everybody wants to rule the world",
...         "Tell me what you want, what you really really want",
...         "Can you feel the love tonight",
...     ],
... )
>>> mapping = {"me": "you", "you": "me", "want": "need"}
>>> s.str.replace_many(mapping)
shape: (3,)
Series: 'lyrics' [str]
[
    "Everybody needs to rule the world"
    "Tell you what me need, what me really really need"
    "Can me feel the love tonight"
]