Analizador de direcciones de Python
-
Analizar dirección usando la biblioteca de Python
PyParsing
-
Analizar la dirección del archivo CSV usando
PyParsing
en Python
Este artículo le mostrará cómo analizar direcciones usando Python. Usaremos la biblioteca pyparsing
para analizar manualmente la dirección y usaremos las funciones o pyparsing
para las direcciones en el archivo CSV.
Comenzaremos con un ejemplo simple y luego pasaremos a uno complejo.
Analizar dirección usando la biblioteca de Python PyParsing
Es ampliamente reconocido que el módulo pyparsing
del lenguaje de programación Python es una herramienta invaluable para realizar operaciones en datos de texto.
El paquete pyparsing
, utilizado para analizar y modificar datos de texto, simplifica el trabajo con direcciones. Esto se debe a que el módulo puede convertir y ayudar a analizar direcciones.
En este artículo, discutiremos el uso del módulo PyParsing
para manejar el análisis y las modificaciones. Veamos un ejemplo real de análisis de una dirección utilizando el módulo PyParsing
.
Después de eso, veremos un ejemplo más extenso para demostrar cómo se puede usar PyParsing
para modificar y analizar datos de direcciones.
Análisis simple de direcciones usando PyParsing
Comencemos mirando un ejemplo básico de análisis de una dirección con la ayuda de la biblioteca de Python PyParsing
. Como primer ejemplo, veamos la siguiente dirección y analicémosla.
567 Main Street
Siga estos pasos para analizar esta dirección:
-
Importar biblioteca
pyparsing
Primero, importaremos la librería
pyparsing
con todos sus módulos y funciones mencionando*
.from pyparsing import *
-
Crear una variable
Ahora crearemos una variable y la asignaremos a la dirección que queremos analizar.
address = "567 Main Street"
-
Descomponer
Ahora desglosaremos las partes de la dirección mencionando
nums
yalphas
.addressParser = Word(nums) + Word(alphas) + Word(alphas)
-
Ahora crearemos una variable y llamaremos a
parseString
desde la bibliotecapyparsing
.addressParts = addressParser.parseString(address)
-
Imprimir
Finalmente, imprimiremos la variable y veremos el resultado.
print(addressParts)
Escribamos el código completo y ejecútelo para ver el resultado.
from pyparsing import *
address = "123 Main Street FL"
addressParser = Word(nums) + Word(alphas) + Word(alphas) + Word(alphas)
addressParts = addressParser.parseString(address)
print(addressParts)
Producción :
['123', 'Main', 'Street', 'FL']
Este código analizará la dirección en cuatro partes: el número de la calle, el nombre de la calle, el tipo de calle y el estado de la dirección.
El número de la calle será la primera parte, el nombre de la calle será la segunda parte, el tipo de calle será la tercera parte y el estado será la última parte.
Cuatro funciones útiles de PyParsing
Podemos usar una de las cuatro funciones disponibles para realizar el análisis real.
ParseString
: conparseString
, puede comenzar a analizar el texto desde el principio sin preocuparse por el contenido innecesario al final.ScanString
-ScanString
busca en la cadena de entrada palabras coincidentes, algo así comore.finditer()
.SearchString
-SearchString
es similar ascanString
, excepto que en lugar de devolver un solo token, proporciona una colección de ellos.TransformString
:TransformString
es similar ascanString
, pero le permite sustituir tokens por otros de su elección.
Analizar la dirección del archivo CSV usando PyParsing
en Python
La información de direccionamiento es un dato específico que se registra con frecuencia en archivos CSV. Debido a que hay una gran diferencia en la forma en que están estructurados, pueden ser difíciles de analizar.
El módulo pyparsing
simplifica la extracción de direcciones de archivos CSV utilizando una estructura definida. Para comenzar, definamos algunas pautas y funciones sencillas sobre cómo analizar una dirección correctamente.
Después de eso, aplicaremos estos principios para analizar archivos CSV que contienen direcciones.
Supongamos que nuestro archivo de configuración o el archivo CSV de la dirección se parece a esto:
city=LAUDERDALE, state=FL, Zipcode: 33316
Tendremos que analizar la cadena en formato clave=valor
. Una cadena CLAVE=VALOR
tiene tres partes: la clave, el signo igual y el valor.
No es necesario incluir el signo igual en el resultado final de un análisis de dicha expresión. Es posible evitar que se incluya un token en la salida utilizando el método Suppress()
.
Los nombres de los tokens pueden proporcionarse mediante la función setResultsName()
o llamando al analizador con el nombre como argumento cuando se construye el analizador, lo que hace que sea un poco más sencillo recuperar tokens específicos. Los tokens preferiblemente deben tener nombres asociados con ellos.
Probemos el código y veamos cómo funciona pyparsing
con archivos CSV.
Comenzaremos con la importación de la biblioteca pyparsing
con todas sus funciones y módulos.
from pyparsing import *
En segundo lugar, crearemos una variable para la parte clave
de la entrada para la salida. Mencionaremos alphanums
porque el conjunto de datos de direcciones puede contener letras y números.
key = Word(alphanums)("key")
Queremos eliminar el signo =
de nuestra salida en el archivo CSV. Usaremos la función Suprimir
.
equals = Suppress("=")
Ahora, haremos una variable para la parte valor
. Y de nuevo, mencionaremos alfanumeros
porque el conjunto de datos de direcciones puede contener letras y números.
value = Word(alphanums)("value")
Ahora, crearemos otra variable para concatenar las variables.
keyValueExpression = key + equals + value
Ahora abriremos nuestro archivo CSV de dirección usando formato de archivo. Y use la función file.read
para leer todos los datos en el archivo.
with open("/address.csv") as address_file:
address_file = address_file.read()
Después de esto, usaremos un bucle for
con la función scanString
o pyparsing
para leer cada línea de la dirección una por una.
for adrs in keyValueExpression.scanString(address_file):
result = adrs[0]
Y por último, usaremos la función print
para ver el resultado.
print("{0} is {1}".format(result.key, result.value))
Aquí termina nuestro código, y ahora escribiremos el código completo para ejecutarlo. Y vea qué resultado obtendremos cuando proporcionemos un archivo CSV con la dirección.
# import library
from pyparsing import *
key = Word(alphanums)("key")
# delet = from the output
equals = Suppress("=")
value = Word(alphanums)("value")
keyValueExpression = key + equals + value
# use file formating to open csv file
with open("/content/address.csv") as address_file:
address_file = address_file.read()
# use for loop to read your CSV file
for adrs in keyValueExpression.scanString(address_file):
result = adrs[0]
# print the output
print("{0} is {1}".format(result.key, result.value))
Producción :
city is LAUDERDALE
state is FL
La salida del código muestra los datos que contiene nuestro archivo. En el archivo address.csv
solo teníamos una dirección.
Y puede ver la funcionalidad de usar la biblioteca pyparsing
a medida que se analiza la dirección.
PyParsing
ofrece una alternativa más robusta y madura a las expresiones regulares al analizar texto en tokens y recuperar o reemplazar tokens individuales.
Por ejemplo, los campos anidados no son un problema para PyParsing
, pero lo serían para expresiones regulares. Este analizador se parece más a los viejos recursos, como lex
y yacc
.
En otras palabras, las expresiones regulares se pueden usar para buscar etiquetas y extraer datos de HTML, pero no se pueden usar para verificar un archivo HTML. Sin embargo, pyparsing
le permitiría lograr esto.
Esperamos que este artículo le resulte útil para comprender el analizador de direcciones utilizado en Python.
My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.
LinkedIn