polars.Expr.str.replace_all
-
Заменяет все совпавшие подстроки регулярного выражения или литеральные подстроки новым строковым значением.
- Параметры:
-
- pattern
-
Допустимый шаблон регулярного выражения, совместимый с библиотекой regex.
- value
-
Строка, которая заменит совпавшую подстроку.
- literal
-
Рассматривать
patternкак литеральную строку, а не как регулярное выражение.
См. также
Примечания
- Чтобы изменить поведение регулярного выражения (например, чувствительность к регистру) с помощью флагов, используйте синтаксис
(?iLmsuxU). Дополнительную информацию об использовании встроенных модификаторов выражений см. в разделе библиотеки regex о группировке и флагах. -
Знак доллара (
$) — это специальный символ, связанный с группами захвата; если вы хотите заменить целевой шаблон символами, включающими литеральный$, его следует экранировать, продублировав:$$, либо задатьliteral=True, если вам не нужно сопоставление с полным шаблоном регулярного выражения. В противном случае вы будете ссылаться на (возможно, несуществующую) группу захвата.В примере ниже знак
$нужно продублировать, чтобы обозначить литеральный знак доллара; в противном случае мы ссылаемся на группу захвата (которая может существовать или не существовать):>>> df = pl.DataFrame({"text": ["ab12cd34ef", "gh45ij67kl"]}) >>> df.with_columns( ... # the replacement pattern refers back to the capture group ... text1=pl.col("text").str.replace_all(r"(?<N>\d{2,})", "$N$"), ... # doubling-up the `$` results in it appearing as a literal value ... text2=pl.col("text").str.replace_all(r"(?<N>\d{2,})", "$$N$$"), ... ) shape: (2, 3) ┌────────────┬──────────────┬──────────────┐ │ text ┆ text1 ┆ text2 │ │ --- ┆ --- ┆ --- │ │ str ┆ str ┆ str │ ╞════════════╪══════════════╪══════════════╡ │ ab12cd34ef ┆ ab12$cd34$ef ┆ ab$N$cd$N$ef │ │ gh45ij67kl ┆ gh45$ij67$kl ┆ gh$N$ij$N$kl │ └────────────┴──────────────┴──────────────┘
Примеры
>>> df = pl.DataFrame({"id": [1, 2], "text": ["abcabc", "123a123"]}) >>> df.with_columns(pl.col("text").str.replace_all("a", "-")) shape: (2, 2) ┌─────┬─────────┐ │ id ┆ text │ │ --- ┆ --- │ │ i64 ┆ str │ ╞═════╪═════════╡ │ 1 ┆ -bc-bc │ │ 2 ┆ 123-123 │ └─────┴─────────┘Поддерживаются группы захвата. Используйте
$1или${1}в строкеvalue, чтобы обратиться к первой группе захвата вpattern,$2или${2}— ко второй группе захвата и так далее. Также можно использовать именованные группы захвата.>>> df = pl.DataFrame({"word": ["hat", "hut"]}) >>> df.with_columns( ... positional=pl.col.word.str.replace_all("h(.)t", "b${1}d"), ... named=pl.col.word.str.replace_all("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( ... # apply case-insensitive string replacement ... pl.col("weather").str.replace_all( ... 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_all(
pattern: str | Expr,
value: str | Expr,
*,
literal: bool = False,
) → 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_all.html