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

Pandas过滤特殊字符、数字字符串时保留词间空格的实现方法

问题根源

原有筛选代码使用的正则(?i)[a-z]+$仅支持匹配纯字母字符串,未将单词间的合法空格纳入允许的字符范围,导致带空格的正常地名被误过滤。

修正代码

替换正则规则,在仅允许字母的基础上,支持匹配单词间的单个分隔空格,同时仍然排除数字、特殊字符、首尾空格、连续空格等非法内容:

out = location[location.apply(lambda c: c.str.match(r'(?i)^[a-z]+(?: [a-z]+)*$')).all(1)]
规则说明

修正后的正则各部分作用:

  • (?i):开启不区分大小写匹配,兼容不同大小写格式的地名
  • ^:锚定字符串起始位置,避免字符串开头出现非法字符
  • [a-z]+:匹配开头的1个及以上字母
  • (?: [a-z]+)*:非捕获组,匹配0次或多次「单个空格+连续字母」组合,仅允许单词之间出现单个分隔空格
  • $:锚定字符串结束位置,避免字符串结尾出现非法字符
匹配结果验证

针对给出的测试数据,筛选结果完全符合预期:

  • 含数字的AGNIN34、含特殊括号字符的(REYDON)被正常过滤
  • 纯字母的MARSCIANO、SIZIANO、APELDOORN、REYDON,以及带单词间空格的SANXIANG TOWN、NEWYORK CITY全部保留,和目标输出一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:46:00