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

Python Pandas使用正则替换移除数字字母混合乱码字符串问题

正则过滤混合字母数字乱码保留合法序数词解决方案

你当前正则错误的核心原因是:r'(?=.*[a-z])(?=.*[\d])[a-z\d]+'会匹配所有同时包含小写字母和数字的字母数字组合串,而1st这类合法序数词也满足「同时有数字+字母」的条件,所以会被误删。


方案1:直接过滤保留合法行(推荐)

如果需求是直接删除无意义乱码所在行,只保留符合规则的序数词行,用str.match匹配规则直接筛选即可:
合法序数词的匹配规则为:开头是数字,结尾是st/nd/rd/th固定后缀,正则写为r'^\d+(?:st|nd|rd|th)$'
代码示例:

# 匹配符合规则的行,直接过滤
df = df[df['strs'].str.match(r'^\d+(?:st|nd|rd|th)$', case=False)]
# case=False参数用于兼容大小写场景,比如1ST这类格式也能匹配,不需要可以删除

方案2:将乱码替换为空字符串,保留原行结构

如果需要保留所有行,仅把乱码替换为空值,用where方法实现:

df['strs'] = df['strs'].where(df['strs'].str.match(r'^\d+(?:st|nd|rd|th)$', case=False), '')

规则扩展说明

如果后续需要增加其他合法混合串规则,只需要调整正则的匹配逻辑即可,比如允许合法串包含大小写字母、特殊符号等,都可以在正则里补充对应匹配项。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:24:01