如何使用Python对加拿大邮编进行格式标准化
加拿大邮编标准化代码方案
以下提供两种常用场景的可直接运行代码:
场景1:Pandas处理表格列(适配Excel/CSV等结构化数据)
import pandas as pd def standardize_ca_postal_code(code): # 仅保留字母数字,移除所有空格、特殊字符 cleaned = ''.join([c for c in str(code).strip() if c.isalnum()]).upper() # 符合6位有效长度则格式化,否则保留原值 if len(cleaned) == 6: return f"{cleaned[:3]} {cleaned[3:]}" return code # 读取本地文件,替换为你的文件路径、邮编列名 df = pd.read_csv("你的数据文件路径.csv") df['postal_code'] = df['postal_code'].apply(standardize_ca_postal_code) # 导出处理后的数据 df.to_csv("标准化后邮编数据.csv", index=False)
场景2:纯Python处理列表类邮编数据
def standardize_ca_postal_code(code): cleaned = ''.join([c for c in str(code).strip() if c.isalnum()]).upper() return f"{cleaned[:3]} {cleaned[3:]}" if len(cleaned) == 6 else code # 示例调用 raw_code_list = ["M1a 5w7", "m1a5W7", "A1A1A1", "B2B 2B2"] standardized_list = [standardize_ca_postal_code(code) for code in raw_code_list] # 输出结果:['M1A 5W7', 'M1A 5W7', 'A1A 1A1', 'B2B 2B2']
核心处理逻辑
- 先清除所有非字母数字字符,同时去除首尾空白,统一解决带空格/无空格的格式差异
- 全部字符转为大写,解决大小写混乱问题
- 拆分前3位和后3位,中间插入空格生成标准格式
- 内置长度校验,不符合6位有效邮编规则的内容会保留原值,避免异常报错
内容的提问来源于stack exchange,提问作者Carolina Medina
相关产品推荐
相关产品推荐

