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

如何将含转义\n的地址数据拆分提取为地址、城市、邮编等独立字段

美国地址拆分实现方案

核心逻辑

你手头的地址是标准的三段式美国地址结构,按固定格式拆分即可:

  • 第一段换行前内容为地址详情
  • 第二段由「城市, 州缩写 邮编」组成
  • 第三段为国家代码

具体实现步骤

  1. 预处理字符串:统一转义格式,把\\n替换回\n,兼容转义和原始两种输入格式
  2. 按\n切割字符串,得到3个独立片段,分别对应地址行、城市州邮编行、国家
  3. 处理城市州邮编行:先按英文逗号切分得到城市名,逗号后剩余内容按空格切分,分别得到州缩写和邮编

示例代码(Python)

def parse_us_address(raw_address: str) -> dict:
    # 兼容转义/未转义两种输入格式
    formatted_address = raw_address.replace("\\n", "\n").strip()
    addr_segments = formatted_address.split("\n")
    # 校验地址格式合法性
    if len(addr_segments) != 3:
        raise ValueError("输入地址不符合三段式标准US地址格式")
    
    addr_line, city_state_zip, country = addr_segments
    # 拆分城市、州、邮编
    city, state_zip_part = city_state_zip.split(",", 1)
    state, zip_code = state_zip_part.strip().split()
    
    return {
        "地址": addr_line.strip(),
        "城市": city.strip(),
        "州": state.strip(),
        "邮编": zip_code.strip(),
        "国家": country.strip()
    }

# 测试用例
if __name__ == "__main__":
    # 转义后格式测试
    test_escaped = "132 Leo Lane Apt. 516\\nThe Colony, TX 76156\\nUS"
    print(parse_us_address(test_escaped))
    # 原始格式测试
    test_raw = "11 w 1120 ave.\nLombard, IL 12348\nUS"
    print(parse_us_address(test_raw))

注意事项

  • 上述方案仅适配你给出的标准格式地址,如果存在城市名带逗号、地址行有多个换行、非美国地址等情况,需要额外增加边缘 case 兼容逻辑
  • 如果地址数据格式杂、数据量大,可直接使用成熟的地址解析库比如usaddress,不用自行维护拆分规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 23:45:03