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

如何用正则表达式保留Pandas列中第二个脱字符前的内容?

解决方法

你的需求是保留字符串中第二个^之前的内容(即前两个由^分隔的部分),之前用的正则r'[\^].+$'会匹配第一个^到结尾的所有内容,所以会直接删掉第一个^之后的全部,不符合预期。

下面提供两种可行的处理方式:

方法1:字符串分割拼接(直观易懂,无需正则)

利用Pandas的字符串分割方法,指定最多分割2次,取前两部分再拼接:

df['你的列名'] = df['你的列名'].str.split('^', n=2).str[:2].str.join('^')
  • n=2:限制最多分割2次,将字符串拆分为[第一部分, 第二部分, 剩余部分]的列表
  • str[:2]:取列表的前两个元素
  • str.join('^'):用^将前两部分重新拼接

方法2:正则替换

如果偏好正则,可以用捕获组保留前两部分,替换掉第二个^及之后的内容:

df['你的列名'] = df['你的列名'].str.replace(r'^([^^]+\^[^^]+)\^.*$', r'\1', regex=True)

正则解释:

  • ^([^^]+\^[^^]+):捕获组,匹配"非^字符 + ^ + 非^字符",也就是你需要保留的前两部分
  • \^.*$:匹配第二个^以及后面的所有内容
  • 替换时用\1引用捕获组的内容,实现保留目标部分

或者用更简洁的正向后顾断言写法:

df['你的列名'] = df['你的列名'].str.replace(r'(?<=[^^]+\^[^^]+)\^.*$', '', regex=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:15:25