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

Pandas如何精准替换DataFrame指定后缀避免字符串误匹配?

解决方案

问题原因

你当前的写法没有限定匹配位置,会替换字符串中任意位置出现的目标字符,同时.在正则规则中属于通配符,也会增加误匹配概率。另外如果短后缀(如.co)先于长后缀(如.co.jp)执行替换,还会导致长后缀无法被正常识别。

实现代码

import re

# 不要用list作为变量名,避免覆盖Python内置关键字
suffix_list = ['.com','.co','.de','.co.jp','.co.uk','.lk','.it','.es','.ua','.bg','.at','.kr']
# 按后缀长度倒序排列,优先匹配更长的后缀,避免短后缀提前截断长后缀
suffix_list_sorted = sorted(suffix_list, key=lambda x: -len(x))
# 生成正则规则:自动转义特殊字符 + 行尾锚点$限定只匹配末尾的后缀
pattern = '|'.join([f'{re.escape(suffix)}$' for suffix in suffix_list_sorted])
# 开启正则模式,一次性完成全部替换
df['source'] = df['source'].str.replace(pattern, '', regex=True)

效果说明

  • 字符串siliconvalley.co会被正确替换为siliconvalley
  • 字符串example.co.jp会被正确替换为example
  • 包含中间字符co的字符串siliconvalleycore.com只会替换末尾的.com,得到siliconvalleycore,不会误替换中间的co字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:15:01