首页 > 解决方案 > 我需要从这个循环的结果中提取邮政编码。

问题描述

我该怎么做才能只获取邮政编码而不是整个地址?现在它显示一个包含邮政编码的完整地址,有没有办法提取邮政编码?

import pandas as pd
import matplotlib.pyplot as plt
import numpy as py
from tabulate import tabulate
from geopy.geocoders import Nominatim
geolocator = Nominatim()

my_data = pd.read_csv('dt/TrafficCounts_OpenData_wm.csv')


geolocator = Nominatim(user_agent="my_application")
sub_set = my_data[["POINT_Y","POINT_X"]]
count = 0
for y in sub_set.itertuples() :
    mypoint = str(y[1]) + ' ,' + str(y[2])
    print(mypoint)
    location = geolocator.reverse(mypoint)
    print(location)
    if count == 5 : break
    count +=1

标签: pythonregexpython-3.x

解决方案


由于邮政编码始终是地址中的最后 5 位或 5 加 4 位,因此您可以使用以下正则表达式从存储在location变量中的地址中提取邮政编码:

import re
zipcode = re.search(r'\d{5}(?:-\d{4})?(?=\D*$)', location).group()

推荐阅读