polars.Series.str.replace#

Series.str.replace(
pattern: str,
value: str,
*,
literal: bool = False,
n: int = 1,
) Series[source]#

用新的字符串值替换第一个匹配的正则表达式/字面量子字符串。

Parameters:
pattern

一个有效的正则表达式模式,与regex crate兼容。

value

将替换匹配子字符串的字符串。

literal

pattern 视为字面字符串。

n

要替换的匹配项数量。

另请参阅

replace_all

注释

  • 要使用标志修改正则表达式的行为(例如大小写敏感性),请使用内联(?iLmsuxU)语法。(有关内联表达式修饰符的使用,请参阅regex crate的分组和标志部分以获取更多信息)。

  • 美元符号($)是一个与捕获组相关的特殊字符;如果你想用包含字面量$的字符替换某些目标模式,你应该通过将其加倍为$$来转义它,或者如果你不需要完整的正则表达式模式匹配,可以设置literal=True。否则,你将会引用一个(可能不存在的)捕获组。

    如果不进行转义,替换值中的 $0(如下所示)表示一个捕获组:

    >>> s = pl.Series("cents", ["000.25", "00.50", "0.75"])
    >>> s.str.replace(r"^(0+)\.", "$0.")
    shape: (3,)
    Series: 'cents' [str]
    [
      "000..25"
      "00..50"
      "0..75"
    ]
    

    要使$表示字面值,应将其加倍为$$ (或者,为了更简单的查找/替换操作,如果您不需要完整的正则表达式匹配,可以设置literal=True):

    >>> s.str.replace(r"^(0+)\.", "$$0.")
    shape: (3,)
    Series: 'cents' [str]
    [
      "$0.25"
      "$0.50"
      "$0.75"
    ]
    

示例

>>> s = pl.Series(["123abc", "abc456"])
>>> s.str.replace(r"abc\b", "ABC")
shape: (2,)
Series: '' [str]
[
    "123ABC"
    "abc456"
]

支持捕获组。在value字符串中使用$1${1}来引用pattern中的第一个捕获组,使用$2${2}来引用第二个捕获组,依此类推。你也可以使用命名捕获组。

>>> s = pl.Series(["hat", "hut"])
>>> s.str.replace("h(.)t", "b${1}d")
shape: (2,)
Series: '' [str]
[
    "bad"
    "bud"
]
>>> s.str.replace("h(?<vowel>.)t", "b${vowel}d")
shape: (2,)
Series: '' [str]
[
    "bad"
    "bud"
]

使用(?i)标志进行不区分大小写的字符串替换。

>>> s = pl.Series("weather", ["Foggy", "Rainy", "Sunny"])
>>> s.str.replace(r"(?i)foggy|rainy", "Sunny")
shape: (3,)
Series: 'weather' [str]
[
    "Sunny"
    "Sunny"
    "Sunny"
]