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

如何拆分Python字符串列并保留+/-分隔符?

问题描述

我不太擅长正则表达式,正在学习提升。我需要拆分包含如下格式值的字符串列:

1000+10%

300-7%

我当前使用的代码为:

pattern = r'[+|-]'
df[postsplitcol] = df[col].str.split(pattern)

但拆分后+或-符号会被移除,请问如何让拆分后的右侧字符串保留这些符号?我已查阅论坛相关问题,但未找到适配该拆分场景的高效方法。

解决方案

你可以使用正向前瞻断言实现拆分时保留符号,正向前瞻只会匹配符号前的位置,不会消耗符号本身,拆分后符号会自然留在右侧字符串里。

修改后的代码如下:

pattern = r'(?=[+-])'  # 正向前瞻,匹配+或-之前的位置
df[postsplitcol] = df[col].str.split(pattern)

效果验证

  • 输入1000+10%,拆分结果为['1000', '+10%']
  • 输入300-7%,拆分结果为['300', '-7%']

原问题原因

你之前用的r'[+|-]'是直接匹配+或-字符,str.split()默认会把匹配到的分隔符从结果中移除,所以符号丢失。而正向前瞻是零宽断言,它只匹配一个位置,不会作为分隔符被移除,因此符号能保留在拆分后的右侧部分。

如果需要把拆分结果分到不同列,可直接展开:

df[['num', 'adjustment']] = df[col].str.split(pattern, expand=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:16:00