Spec-Zone.ru › Polars

polars.Expr.str.replace_all

Expr.str.replace_all(
    pattern: str | Expr,
    value: str | Expr,
    *,
    literal: bool = False,
) → Expr

Заменяет все совпавшие подстроки регулярного выражения или литеральные подстроки новым строковым значением.

движок:В памятиПотоковая обработкаРаспределённая обработка
Параметры:
pattern

Допустимый шаблон регулярного выражения, совместимый с библиотекой regex.

value

Строка, которая заменит совпавшую подстроку.

literal

Рассматривать pattern как литеральную строку, а не как регулярное выражение.

См. также

replace

Примечания

  • Чтобы изменить поведение регулярного выражения (например, чувствительность к регистру) с помощью флагов, используйте синтаксис (?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   │
└──────────────┴────────┴─────────┘

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API