sirve que para paquete libreria hace and python parsing street-address

python - que - ¿hay una biblioteca para analizar las direcciones de EE. UU.?



que es numpy and scipy (6)

Algunas de estas respuestas tienen algunos años ahora.

La biblioteca más a prueba de balas que he visto recientemente es usaddress : https://github.com/datamade/usaddress :

  • Mucho más preciso que la address que hemos estado utilizando durante un año ahora https://pypi.python.org/pypi/address/0.1.1 .
  • Sin embargo, ver que falla en una dirección
  • Todavía estoy comprometido a partir de este escrito

Sugerencia: cuando pruebe direcciones en todas estas bibliotecas, use 1) sin comas en su dirección, 2) nombres de ciudades de varias palabras, preferiblemente con "St." en el nombre para ver si la biblioteca puede diferenciar entre "calle" y "Santo" (por ejemplo, St. Louis), y 3) carcasa incorrecta. Este combo generalmente hará que incluso los mejores analizadores caigan.

Tengo una lista de direcciones de EE. UU. Que necesito dividir en ciudad, estado, código postal, estado, etc.

dirección de ejemplo: "16100 Sand Canyon Avenue, Suite 380 Irvine, CA 92618"

¿Alguien sabe de una biblioteca o una API gratis para hacer esto? El código geográfico de Google / Yahoo tiene prohibido su uso por los TOS para proyectos comerciales.

Sería increíble encontrar una biblioteca de Python que preforma esto ...

Gracias


Esa biblioteca de pyparsing parece muy interesante y parece hacer un buen trabajo con una variedad de ejemplos. Y creo que es una alternativa más legible a las expresiones regulares en bruto (que no son realmente una buena solución para este problema).

Tenga en cuenta que ese tipo de solución implica que, en algún momento, estará estandarizando direcciones que no son válidas ... simplemente parecerán válidas. Si saber si una dirección es real, (y tal vez entregable) es importante para su aplicación, entonces debe utilizar un servicio certificado por USPS que utilice la Validación de punto de entrega (DPV). Soy un desarrollador de SmartyStreets , que proporciona solo un servicio de este tipo, junto con los SDK que facilitan la integración ( aquí hay una muestra sucinta ).

Las respuestas vuelven estandarizadas según la Publicación 28 de USPS. La API es gratuita para usuarios de bajo uso.



Revise cuidadosamente su conjunto de datos para asegurarse de que este problema no haya sido procesado por usted.

Pasé una buena cantidad de tiempo primero creando una taxonomía de la finalización del nombre de la calle, usando condones regexp para tratar de sacar el número de calle de las cadenas de direcciones completas y todo y resultó que la tabla de atributos para mis shapefiles ya se había segmentado estos componentes.

Antes de seguir adelante con el proceso de análisis de las cadenas de direcciones, que siempre es un poco complicado debido a las inevitables variaciones extrañas (algunas direcciones de paquete son para parcelas sin litoral y tienen direcciones extrañas, etc.), asegúrese de que su conjunto de datos aún no hecho esto para ti!


Sé que esta es una publicación anterior, pero a alguien le puede resultar útil: https://usaddress.readthedocs.io/en/latest/

>>> import usaddress >>> usaddress.parse(''Robie House, 5757 South Woodlawn Avenue, Chicago, IL 60637'') [(''Robie'', ''BuildingName''), (''House,'', ''BuildingName''), (''5757'', ''AddressNumber''), (''South'', ''StreetNamePreDirectional''), (''Woodlawn'', ''StreetName''), (''Avenue,'', ''StreetNamePostType''), (''Chicago,'', ''PlaceName''), (''IL'', ''StateName''), (''60637'', ''ZipCode'')]

O:

>>> import usaddress >>> usaddress.tag(''Robie House, 5757 South Woodlawn Avenue, Chicago, IL 60637'') (OrderedDict([ (''BuildingName'', ''Robie House''), (''AddressNumber'', ''5757''), (''StreetNamePreDirectional'', ''South''), (''StreetName'', ''Woodlawn''), (''StreetNamePostType'', ''Avenue''), (''PlaceName'', ''Chicago''), (''StateName'', ''IL''), (''ZipCode'', ''60637'')]), ''Street Address'') >>> usaddress.tag(''State & Lake, Chicago'') (OrderedDict([ (''StreetName'', ''State''), (''IntersectionSeparator'', ''&''), (''SecondStreetName'', ''Lake''), (''PlaceName'', ''Chicago'')]), ''Intersection'') >>> usaddress.tag(''P.O. Box 123, Chicago, IL'') (OrderedDict([ (''USPSBoxType'', ''P.O. Box''), (''USPSBoxID'', ''123''), (''PlaceName'', ''Chicago''), (''StateName'', ''IL'')]), ''PO Box'')