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

Python中基于通用分隔符分割字符串及地址字段提取问题

嘿,我来帮你搞定这个地址分割的问题!咱们一步步来,先解决你当前的疑问,再聊聊更优的实现方式~

1. 延续你现有思路提取剩余信息

你已经成功拿到了街道信息,其实可以用同样的思路继续拆分剩下的内容,不过记得加个strip()去掉每个部分前后的空格(原字符串里分隔符两边有空格):

address = '1234 Broadway Ave | Los Angeles | CA | 94530'

# 提取街道
street = address[:address.index('|')].strip()
# 拿到街道之后的剩余部分
remaining = address[address.index('|') + 1:]

# 提取城市
city = remaining[:remaining.index('|')].strip()
remaining = remaining[remaining.index('|') + 1:]

# 提取州
state = remaining[:remaining.index('|')].strip()
# 提取邮编(最后一部分没有后续分隔符)
zip_code = remaining[remaining.index('|') + 1:].strip()

print(street)   # 输出:1234 Broadway Ave
print(city)     # 输出:Los Angeles
print(state)    # 输出:CA
print(zip_code) # 输出:94530
2. 更简单的实现:用split()分割字符串

其实Python的字符串自带split()方法,能直接按指定分隔符把字符串拆成列表,这比一次次找索引高效多了!

如果你的地址分隔符固定是|(空格+竖线+空格),可以直接这样写:

address = '1234 Broadway Ave | Los Angeles | CA | 94530'
# 按' | '分割成列表
parts = address.split(' | ')
# 直接把列表元素赋值给对应的变量
street, city, state, zip_code = parts

print(street, city, state, zip_code)

要是担心分隔符前后的空格不固定(比如有的地方是多个空格),可以先按|分割,再给每个元素去掉前后空格:

parts = [part.strip() for part in address.split('|')]
street, city, state, zip_code = parts

这种写法更鲁棒,能处理各种空格不一致的情况~

3. 正则表达式(适合复杂地址场景)

既然你问到了正则,我给你举个简单的例子,虽然你之前没接触过,但这个场景下的正则很好理解:

正则的核心是用匹配模式来定位你要的内容。咱们这个地址的模式是「内容 | 内容 | 内容 | 内容」,可以用下面的代码提取:

import re

address = '1234 Broadway Ave | Los Angeles | CA | 94530'
# 定义匹配模式:(.*?) 表示匹配任意字符,直到遇到后面的' | '
pattern = r'(.*?) \| (.*?) \| (.*?) \| (.*)'
# 用模式匹配地址字符串
match_result = re.match(pattern, address)

if match_result:
    street = match_result.group(1)
    city = match_result.group(2)
    state = match_result.group(3)
    zip_code = match_result.group(4)

print(street, city, state, zip_code)

解释一下:r''表示原始字符串(避免转义字符干扰),(.*?)是「非贪婪匹配」,会精准停在后面的|前;最后一个(.*)因为后面没有分隔符,直接匹配到字符串末尾。

不过要说明的是:如果你的地址格式很固定,split()方法足够简单高效;正则更适合处理格式不统一的复杂地址(比如有的地址有额外的公寓号、不同的分隔符等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:25:02