polars.Expr.str.replace
-
Заменяет первое совпадение регулярного выражения/литеральной подстроки новым строковым значением.
- Параметры:
-
- pattern
-
Допустимый шаблон регулярного выражения, совместимый с библиотекой regex.
- value
-
Строка, которая заменит совпавшую подстроку.
- literal
-
Обрабатывать
patternкак литеральную строку, а не как регулярное выражение. - n
-
Количество совпадений для замены.
См. также
Примечания
- Чтобы изменить поведение регулярного выражения (например, чувствительность к регистру) с помощью флагов, используйте встроенный синтаксис
(?iLmsuxU). Дополнительные сведения об использовании встроенных модификаторов выражений см. в разделе библиотеки regex, посвящённом группировке и флагам. -
Знак доллара (
$) — это специальный символ, связанный с группами захвата; если вы хотите заменить целевой шаблон символами, содержащими литеральный$, его нужно экранировать, продублировав как$$, или задатьliteral=True, если не требуется сопоставление с полным шаблоном регулярного выражения. В противном случае будет сделана ссылка на группу захвата, которая может не существовать.В примере ниже необходимо продублировать
$(чтобы представить литеральный знак доллара), а затем сослаться на группу захвата с помощью$nили${n}; поэтому в значении замены подряд идут три символа$:>>> df = pl.DataFrame({"cost": ["#12.34", "#56.78"]}) >>> df.with_columns( ... cost_usd=pl.col("cost").str.replace(r"#(\d+)", "$$${1}") ... ) shape: (2, 2) ┌────────┬──────────┐ │ cost ┆ cost_usd │ │ --- ┆ --- │ │ str ┆ str │ ╞════════╪══════════╡ │ #12.34 ┆ $12.34 │ │ #56.78 ┆ $56.78 │ └────────┴──────────┘
Примеры
>>> df = pl.DataFrame({"id": [1, 2], "text": ["123abc", "abc456"]}) >>> df.with_columns(pl.col("text").str.replace(r"abc\b", "ABC")) shape: (2, 2) ┌─────┬────────┐ │ id ┆ text │ │ --- ┆ --- │ │ i64 ┆ str │ ╞═════╪════════╡ │ 1 ┆ 123ABC │ │ 2 ┆ abc456 │ └─────┴────────┘Поддерживаются группы захвата. Используйте
$1или${1}в строкеvalue, чтобы сослаться на первую группу захвата вpattern,$2или${2}— чтобы сослаться на вторую группу захвата и так далее. Также можно использовать именованные группы захвата.>>> df = pl.DataFrame({"word": ["hat", "hut"]}) >>> df.with_columns( ... positional=pl.col.word.str.replace("h(.)t", "b${1}d"), ... named=pl.col.word.str.replace("h(?<vowel>.)t", "b${vowel}d"), ... ) shape: (2, 3) ┌──────┬────────────┬───────┐ │ word ┆ positional ┆ named │ │ --- ┆ --- ┆ --- │ │ str ┆ str ┆ str │ ╞══════╪════════════╪═══════╡ │ hat ┆ bad ┆ bad │ │ hut ┆ bud ┆ bud │ └──────┴────────────┴───────┘Выполните замену строк без учёта регистра с помощью флага
(?i).>>> df = pl.DataFrame( ... { ... "city": "Philadelphia", ... "season": ["Spring", "Summer", "Autumn", "Winter"], ... "weather": ["Rainy", "Sunny", "Cloudy", "Snowy"], ... } ... ) >>> df.with_columns( ... pl.col("weather").str.replace(r"(?i)foggy|rainy|cloudy|snowy", "Sunny") ... ) shape: (4, 3) ┌──────────────┬────────┬─────────┐ │ city ┆ season ┆ weather │ │ --- ┆ --- ┆ --- │ │ str ┆ str ┆ str │ ╞══════════════╪════════╪═════════╡ │ Philadelphia ┆ Spring ┆ Sunny │ │ Philadelphia ┆ Summer ┆ Sunny │ │ Philadelphia ┆ Autumn ┆ Sunny │ │ Philadelphia ┆ Winter ┆ Sunny │ └──────────────┴────────┴─────────┘
Expr.str.replace(
pattern: str | Expr,
value: str | Expr,
*,
literal: bool = False,
n: int = 1,
) → Expr
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.str.replace.html