polars.Expr.str.replace_many#
- Expr.str.replace_many(patterns: IntoExpr | Mapping[str, str], replace_with: IntoExpr | NoDefault = <no_default>, *, ascii_case_insensitive: bool = False) Expr [source]#
Use the Aho-Corasick algorithm to replace many matches.
- Parameters:
- patterns
String patterns to search and replace. Accepts expression input. Strings are parsed as column names, and other non-expression inputs are parsed as literals. 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. Accepts expression input. Non-expression inputs are parsed as literals. 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 sequences of equal length to the
patterns
andreplace_with
parameters.>>> _ = pl.Config.set_fmt_str_lengths(100) >>> _ = pl.Config.set_tbl_width_chars(110) >>> df = pl.DataFrame( ... { ... "lyrics": [ ... "Everybody wants to rule the world", ... "Tell me what you want, what you really really want", ... "Can you feel the love tonight", ... ] ... } ... ) >>> df.with_columns( ... pl.col("lyrics") ... .str.replace_many( ... ["me", "you"], ... ["you", "me"], ... ) ... .alias("confusing") ... ) shape: (3, 2) ┌────────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ lyrics ┆ confusing │ │ --- ┆ --- │ │ str ┆ str │ ╞════════════════════════════════════════════════════╪═══════════════════════════════════════════════════╡ │ Everybody wants to rule the world ┆ Everybody wants to rule the world │ │ Tell me what you want, what you really really want ┆ Tell you what me want, what me really really want │ │ Can you feel the love tonight ┆ 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) >>> df = pl.DataFrame( ... { ... "lyrics": [ ... "Everybody wants to rule the world", ... "Tell me what you want, what you really really want", ... "Can you feel the love tonight", ... ] ... } ... ) >>> df.with_columns( ... pl.col("lyrics") ... .str.replace_many( ... ["me", "you", "they"], ... "", ... ) ... .alias("removes_pronouns") ... ) shape: (3, 2) ┌────────────────────────────────────────────────────┬────────────────────────────────────────────┐ │ lyrics ┆ removes_pronouns │ │ --- ┆ --- │ │ str ┆ str │ ╞════════════════════════════════════════════════════╪════════════════════════════════════════════╡ │ Everybody wants to rule the world ┆ Everybody wants to rule the world │ │ Tell me what you want, what you really really want ┆ Tell what want, what really really want │ │ Can you feel the love tonight ┆ 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) >>> _ = pl.Config.set_tbl_width_chars(110) >>> df = pl.DataFrame( ... { ... "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"} >>> df.with_columns( ... pl.col("lyrics").str.replace_many(mapping).alias("confusing") ... ) shape: (3, 2) ┌────────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ lyrics ┆ confusing │ │ --- ┆ --- │ │ str ┆ str │ ╞════════════════════════════════════════════════════╪═══════════════════════════════════════════════════╡ │ Everybody wants to rule the world ┆ Everybody needs to rule the world │ │ Tell me what you want, what you really really want ┆ Tell you what me need, what me really really need │ │ Can you feel the love tonight ┆ Can me feel the love tonight │ └────────────────────────────────────────────────────┴───────────────────────────────────────────────────┘