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

如何移除pandas DataFrame列中'*.'字符组合并解决正则报错

问题背景

处理DataFrame数据时,需要移除data_col列中所有出现的*.字符组合,该列的示例取值如下:

  • *.test1.934n
  • test1.tedsdh
  • *.test1.test.sdfsdf
  • jhsdakn
  • *.test2.test

最初执行的替换代码为:

df['data_col'].str.replace('^*.','')

运行后抛出错误:re.error: nothing to repeat at position 1。

错误原因
  1. 正则语法冲突:pandas的Series.str.replace()方法默认开启正则匹配模式,正则语法中*是特殊量词,作用是匹配前一个规则0次及以上。你写的匹配规则里*前面是字符串开头锚点^,没有可重复匹配的有效单元,正则解析器无法识别,直接抛出位置1的重复规则无匹配对象的错误。
  2. 匹配逻辑偏差:规则里的^是锚定字符串开头的特殊标记,就算修正了转义问题,也只会替换字符串最开头的*.,无法覆盖列中所有位置出现的该字符组合,不符合全量移除的需求。
修复方案

二选一即可:

方案1:正则转义匹配

对正则里的特殊字符*和.做转义,去掉开头锚点,匹配全字符串中所有的*.组合:

df['data_col'] = df['data_col'].str.replace(r'\*\.', '', regex=True)

代码里的r前缀是Python原生字符串标识,避免反斜杠转义冲突,显式写regex=True可以兼容不同版本的pandas,避免默认参数变动导致的异常。

方案2:字面量替换(简单场景更推荐)

直接关闭正则匹配模式,此时传入的待匹配字符串会被当做普通文本做精确替换,不需要处理任何正则特殊字符,写法更简单不易出错:

df['data_col'] = df['data_col'].str.replace('*.', '', regex=False)
替换效果

用给出的示例数据执行上述任一代码后,data_col列的输出结果为:

  • test1.934n
  • test1.tedsdh
  • test1.test.sdfsdf
  • jhsdakn
  • test2.test
    完全符合移除所有*.字符组合的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.04 16:15:41