You need to enable JavaScript to run this app. Pandas正则按规则删除点前单词末尾数字 保留首段与词内数字
优惠活动
大模型
产品
解决方案
定价
更多

Pandas正则按规则删除点前单词末尾数字 保留首段与词内数字

实现方案

核心逻辑匹配规则

  • 完全保留第一个点之前的首段内容,不做任何修改
  • 仅删除非首段中,位于分片末尾、后面紧跟点或字符串结束的连续数字
  • 分片内部的数字(如grp23Symbol中的23)不做处理

通用Python正则实现

import re

original_str = "Node57Name123.grpObject12.grp23Symbol43.shape52.anotherobject25.shape23"
processed_str = re.sub(
    r'^([^.]+)\.(.*)$',
    lambda match: match.group(1) + '.' + re.sub(r'\d+(?=\.|$)', '', match.group(2)),
    original_str
)
# 输出结果:Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape

Pandas场景用法

若需处理DataFrame中的字符串列,优先使用str.replace实现:

import pandas as pd

# 假设原始字符串列名为 raw_str
df['processed_str'] = df['raw_str'].str.replace(
    r'^([^.]+)\.(.*)$',
    lambda match: match.group(1) + '.' + re.sub(r'\d+(?=\.|$)', '', match.group(2)),
    regex=True
)

若Pandas版本较低不支持str.replace传入函数,可改用apply实现:

df['processed_str'] = df['raw_str'].apply(
    lambda s: re.sub(
        r'^([^.]+)\.(.*)$',
        lambda m: m.group(1) + '.' + re.sub(r'\d+(?=\.|$)', '', m.group(2)),
        s
    )
)

正则说明

  • ^([^.]+)\.:匹配字符串开头,捕获第一个点前的所有内容作为第一组,确保首段完全保留
  • \d+(?=\.|$):匹配连续数字,正向环视要求数字后面必须紧跟点或字符串结束,仅删除符合该条件的数字,分片内部的数字不会被匹配
    之前使用的re.sub(r"\d+","",string)会全局删除所有数字,既会误删首段的数字,也会误删分片内部的数字,不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 08:45:01