Tengo que hacer un poco de masaje de los datos de nuestro paquete para que pueda ser utilizado por un programa en helicópteros Sheriff. El programa requiere uno de los siguientes formatos de dirección dentro de los campos:
Nuestras direcciones están actualmente en un campo: por ejemplo: 1234 W Main St.
¿Hay alguna manera de automatizar la división de los campos en cualquiera de estos formatos deseados?
Me imagino que el formato de dos campos sería más fácil simplemente llamando a una división después de los números, pero también podría causar un problema para calles como 1st Ave, etc.
Respuestas:
En lugar de usar múltiples RegExes para analizar direcciones, simplemente use la herramienta lista para usar de Esri diseñada para esta tarea, estandarizar direcciones . Está disponible en todos los niveles de licencia y mi experiencia con él ha sido positiva.
fuente
Puede lograr esto en la calculadora de campo usando python. Puede que este no sea el más elegante, pero es un comienzo, asumiendo el caso más simple (es decir, todas sus direcciones se ven iguales). Primero crearía los campos adicionales necesarios. Asumiendo que su columna con la dirección completa se llama "Dirección".
Para HOUSENO en la calculadora de campo, escriba:
Esto se puede llamar desde el cuadro de cálculo como:
Para su nombre de calle:
Codeblock:
Para la dirección asumiendo que es el primer personaje cada vez:
Codeblock:
Aquí está el recurso de python para re . Este caso de estudio 7.1: Direcciones de calles me ha ayudado en numerosas ocasiones a ordenar mi base de datos de calles / direcciones también usando módulos python y re. Esto debería ayudarte, desde aquí si no estás obteniendo resultados, quieres comentar y puedo alterar mi código
fuente
Como dijo Erica, su segundo formato es fácil. Si todos los nombres de sus calles fueran una palabra, podría verificar la longitud de la lista después de dividir el campo original. Longitud de 3 = sin prefijo, longitud de 4 = tiene un prefijo (también suponiendo que SUFTYPE siempre esté poblado). Esto falla cuando una calle tiene más de una palabra, como 'Grand River'. Puede verificar si el segundo elemento coincide con una lista de prefijos permitidos y proceder desde allí. Tendría que probar esto para ver si funcionaba con sus datos.
fuente
Asegúrese de que su entrada esté en formato de cadena y simplemente use la función string.split () que se dividirá en espacios en blanco y devolverá una lista. (por ejemplo, "1234 W Main St." devolvería ["1234", "W", "Main", "St."])
A partir de ahí, usaría algunas declaraciones condicionales para verificar sus datos dependiendo de qué tan consistente sea su entrada. Si la única inconsistencia en sus datos es que a veces hay un predir y otras no, simplemente verifique la lista devuelta para ver si tiene una longitud de 3 o 4 (o> 4 si su calle El nombre tiene espacios).
if len (splitList) == 4:
elif len (splitList) == 3:
fuente