You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Polars的replace_all方法中引用正则捕获组?

在Polars中使用正则捕获组进行替换

Polars 里可以通过字符串方法str.replace_all结合正则捕获组实现你要的效果,捕获组的引用语法和PostgreSQL类似,用\1对应第一个捕获组(多捕获组场景依次用\2、\3即可)。

示例代码

假设你有如下数据,需要把类似5m的格式替换为5 metres:

import polars as pl

# 创建示例DataFrame
df = pl.DataFrame({
    "text_col": ["5m", "10m", "3km", "15m "]
})

# 执行替换操作,引用捕获组
processed_df = df.with_columns(
    # 匹配数字+m的格式,捕获数字部分,替换为"数字 + metres"
    pl.col("text_col").str.replace_all(r"(\d+)m", r"\1 metres").alias("converted_text")
)

print(processed_df)

运行结果

shape: (4, 2)
┌──────────┬────────────────┐
│ text_col ┆ converted_text │
│ ---      ┆ ---            │
│ str      ┆ str            │
╞══════════╪════════════════╡
│ 5m       ┆ 5 metres       │
│ 10m      ┆ 10 metres      │
│ 3km      ┆ 3km            │
│ 15m      ┆ 15 metres      │
└──────────┴────────────────┘

注意事项

  • 正则表达式要使用原始字符串(前缀r),避免Python解析转义字符,确保\1能被Polars的正则引擎正确识别为捕获组引用。
  • 如果需要匹配带空格的m (比如你的PostgreSQL示例),只需把正则调整为r"(\d+)m ",替换字符串改为r"\1 metres "即可。

内容的提问来源于stack exchange,提问作者bkw1491

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:22:36