4 votos

Cómo Analizar los Únicos Datos de la Dirección

Estoy tratando de analizar algunos de funky datos de dirección en distintos campos, ya sea utilizando ArcMap la Calculadora de Campo o una secuencia de Comandos de Python. En la actualidad, mis datos de la dirección, incluyendo calle, número, nombre de la calle, y de la unidad/apt/número de habitación están todos en un mismo campo. Algunos ejemplos de la diversidad en mis datos son:

1111 2ND ST
1753 21ST ST 2DO PISO
2125 ARIZONA AVE #303
2424 12TH ST SUITE 100

Afortunadamente, sólo hay un puñado de sufijos, que incluyen:

AV | AVE | BL | CT | DR | CARRIL | PKWY | PL | RD | ST | TER |

Lo de python métodos que utilizo para buscar estos identificadores únicos y, a continuación, dividir lo que sigue (por ejemplo, "PISO 2", "#303", "SUITE 100")?

6voto

Alex Tereshenkov Puntos 13433

Usted podría utilizar .split método para esto.

inStr = "1753 21ST ST 2ND FLOOR"
result = inStr.split(' ST ')
print result

>>>['1753 21ST', '2ND FLOOR']

Tenga en cuenta que el resultado es la lista que usted tendría que recorrer si quiere tener las manos en uno de los elementos de la dirección. Si usted necesita trabajar con los elementos de dirección de una manera más avanzada, que llegará inevitablemente a la utilización de expresiones regulares con ArcGIS o Python.

Para tomar el cuidado de todos los casos posibles, me ha proporcionado una lista de los separadores. La suposición es que los separadores son siempre abrazado por espacios en blanco en ambos lados - ' ST 'y el' AVE ' y así sucesivamente:

inStrings = ["1753 21ST ST 2ND FLOOR","2125 ARIZONA AVE #303","2424 12TH TER SUITE 100"]

outAddresses = []
separators = ["AV","AVE","BL","CT","DR","LANE","PKWY","PL","RD","ST","TER","WAY"]

for address in inStrings:
    for separator in separators:
        if len(address.split(' {0} '.format(separator))) > 1:
            outAddresses.append(address.split(' {0} '.format(separator)))

print outAddresses

>>>[['1753 21ST', '2ND FLOOR'], ['2125 ARIZONA', '#303'], ['2424 12TH', 'SUITE 100']]

La salida puede también ser escrito con la lista de comprensión (es más difícil de leer, pero más compacto y a veces más rápido):

outAddresses = [address.split(' {0} '.format(separator)) for separator in separators for address in inStrings
 if len(address.split(' {0} '.format(separator))) > 1]

1voto

ring0 Puntos 2732

USPS reconoce no 12 pero cerca de 200 posibles calle sufijos, además de que hay un sinnúmero de posibles faltas de ortografía de ellos.

Con la vida real de los datos que no es 100% limpio y estandarizado, usted tendrá una mejor suerte con una validación de la dirección de la API, tales como YAddress (realizados por la empresa para la que trabajo). Después de corregir y estandarizar la dirección, YAddress se rompe la parte de la calle en 7 diferentes componentes -- pre-dirección, post-dirección, sufijo, etc.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X