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

Polars中str.extract与str.extract_all结果为何存在差异?

Polars中str.extract与str.extract_all返回结果差异的原因及解决方法

str.extract_all默认确实不会像str.extract那样仅返回捕获组内容,这是两个方法的设计差异导致的:

  • str.extract的定位就是提取单个捕获组,第二个参数指定要获取的捕获组索引(默认是1),所以直接返回捕获组的内容。
  • str.extract_all默认返回整个匹配的完整字符串,如果需要获取捕获组,必须显式传入groups参数指定要提取的组。

针对你的测试代码,只需要给str.extract_all加上groups=1参数,就能得到和str.extract一致的捕获组结果:

import polars as pl
# polars==0.20.30

dff = pl.DataFrame({'a': 'Label: name, Value: John, Label: car, Value: Ford'})
(
    dff.with_columns(
        pl.col('a').str.extract(r'Label:?(.*?) Value:', 1).alias('data1'),
        pl.col('a').str.extract_all(r'Label:?(.*?) Value:', groups=1).list.get(0).alias('data2')
    )
)

修改后的运行结果:

data1: " name,"
data2: " name,"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:39:56