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

Python使用re正则移除地址中#、Apt、Unit等后跟编号的后缀内容

正则错误原因

你原有正则的#.*使用了贪婪匹配规则,.默认匹配除换行符外的所有字符,会从#所在位置一直匹配到整个字符串末尾,因此逗号及后面的城市、邮编内容都会被误删,同时开头的捕获组(\\.*)写法错误,不符合匹配街道名称的需求。

正确实现代码
import re

# 匹配规则:空白字符开头 + 单元号前缀 + 单元号内容(匹配到逗号前停止)
pattern = r'\s+(#|Apt|Unit|Suite)\s*[^,]+'

# 测试示例1:带#号单元号
string1 = "5956 Executive Dr #101, Fitchburg, WI 53719"
string2 = re.sub(pattern, "", string1)
print(string2)
# 输出:5956 Executive Dr, Fitchburg, WI 53719

# 测试示例2:带Apt、Unit、Suite等类型的单元号,支持大小写匹配(加flags=re.IGNORECASE)
string3 = "123 Main St apt 3, New York, NY 10001"
string4 = re.sub(pattern, "", string3, flags=re.IGNORECASE)
print(string4)
# 输出:123 Main St, New York, NY 10001
规则说明
  • \s+:匹配单元号前的一个或多个空白字符,避免删除内容后出现多余空格
  • (#|Apt|Unit|Suite):匹配所有需要识别的单元号前缀,可根据需求自行补充其他前缀
  • \s*:匹配前缀和单元号内容之间可选的空白字符,兼容#101、# 101两种写法
  • [^,]+:匹配除逗号外的所有字符,确保不会误删逗号及之后的城市、邮编内容
  • 加flags=re.IGNORECASE可兼容小写、大小写混合的前缀写法,比如apt、unit、Suite都能正常匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:24:03