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

如何从pandas列中提取被**包裹的子串并解决正则匹配报错?

错误原因
  • 正则语法不规范:*在正则规则里是特殊量词,作用是匹配前一个字符出现0次或更多次。你的正则表达式开头直接写**,第一个*没有对应的前置匹配字符,正则解析器无法识别匹配规则,所以抛出nothing to repeat at position 0的错误。如果要匹配文本中实际的*符号,需要用反斜杠转义,写成\*。
  • 方法调用不符合pandas使用规则:re.search只能接收单个字符串作为入参,不能直接传入pandas的Series对象(也就是你取的df.description整列数据),处理整列的正则匹配需要用pandas自带的字符串处理方法。
正确实现方案

直接用pandas的str.extract方法完成整列提取,示例代码如下:

# 提取所有**包裹的内容,存入新列status
df['status'] = df['description'].str.extract(r'\*\*(.+?)\*\*')

代码说明:

  • 字符串前加r代表使用原生字符串,避免反斜杠转义符被Python本身提前解析
  • \*\*匹配文本中实际存在的**符号
  • (.+?)是非贪婪匹配,会捕获两个**之间的所有内容,最终返回的就是你需要的状态值

如果要基于提取的内容做筛选,直接用生成的status列过滤即可,比如筛选所有状态为Closed的行:

closed_task_df = df[df['status'] == 'Closed']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:21:03