从具有完整地址的字符串中提取邮政编码

问题描述

我抓取了一些网站来收集公司数据。地址数据就是其中之一。由于 HTML 标签,我只能抓取一个标签”中的数据。下面是我的数据输出示例。

Streetname housenumber zip-code city country
Street 1 1234 AB Amsterdam Netherlands
Longerstreetname 22 9876 XY Den Haag Netherlands
Name: Address,Length: 314,dtype: object

现在,我需要将邮政编码(仅邮政编码)提取一个新列中以进行进一步分析。我主要在数据清理阶段使用熊猫。 (我要查清楚每个公司在哪个省)

搜索了许多选项来找到提取邮政编码的方法,因此我没有成功。 任何帮助将不胜感激!

enter image description here

解决方法

我认为您可以使用正则表达式。

示例:

import re


address = '7802 Grant Avenue Egg Harbor Township,NJ 08234'
us_zip = r'(\d{5}\-?\d{0,4})'
zip_code = re.search(us_zip,address)
zip_code.group(1)

重要提示: 世界各地的邮政编码没有特定的模式。如果您想抓取来自不同国家/地区的公司,您应该为所有这些公司实施正则表达式。

希望这个文件可以帮到你。 zip codes regex

,

如果问题中发布的示例输出是数据框中名为 Address 且类型为 object 的列中的值,则可以按如下方式创建带有提取的邮政编码的新列:>

df['Zip Code'] = " ".join(str(df['Address']).split(" ")[2:4])