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

Polars优化咨询:如何高效在第2个下划线后拆分字符串?

优化Polars中按第二个下划线拆分字符串的方法

你的当前方法通过拆分列表再切片拼接,在数据量较大时效率偏低,这里提供两种更高效的优化方案:

方案一:正则表达式直接提取

利用str.extract结合正则,直接匹配第二个下划线前的内容,无需生成完整拆分列表,性能最优:

import polars as pl

result = pl.select(
    pl.lit("my_string_occurrence").str.extract(r"^([^_]+_[^_]+)")
)

输出结果:

┌───────────┐
│ literal   │
│ ---       │
│ str       │
╞═══════════╡
│ my_string │
└───────────┘

正则说明:^([^_]+_[^_]+) 匹配字符串开头部分,其中[^_]+表示匹配任意非下划线字符,两次该表达式用_连接,正好对应前两个由下划线分隔的内容。

方案二:限制拆分次数的str.splitn

使用str.splitn(n, sep)最多拆分n次,避免拆分所有下划线,减少列表操作的开销:

import polars as pl

result = pl.select(
    pl.lit("my_string_occurrence").str.splitn(3, "_")
    .list.slice(0, 2)
    .list.join("_")
)

splitn(3, "_")会将字符串拆分为最多3部分(前两个下划线分隔的内容 + 剩余所有内容),再取前两部分拼接即可,效率比原str.split("_")更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:15:04