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
相关产品推荐
相关产品推荐

