1. Búsqueda de cadenas de texto con Python – Find()
1.1 Introducción
Es bastante común llevar a cabo la búsqueda de cadenas de texto en ficheros o simplemente en variables de tipo texto, en nuestro caso leeremos un fichero y buscaremos un trozo de texto como por ejemplo un nombre en el contenido de un fichero.
Antes de comenzar este manual recomendamos echar un ojo al anterior manual ‘Leer ficheros con Python – Línea a línea‘
1.2 Crear fichero de ejemplo
El primer paso será crear un fichero con el que trabajaremos este ejemplo, para llevar a cabo este paso asumiremos que trabajamos en un entorno Linux (como Raspbian de Raspbery Pi), en este entorno ejecutaremos los siguientes comandos en nuestra consola:
- Crearemos la siguiente carpeta ‘EjemplosTextos‘ con los siguientes comandos en la consola de nuestra Raspberry Pi:
cd /home/pi
mkdir EjemplosTextos
cd EjemplosTextos
- Crearemos un fichero llamado ‘Ejemplo.txt‘ donde introduciremos nuestro nombre y apellidos. Recomendamos usar el siguiente ejemplo:
echo «Antonio Fenandez Martinez» >> Ejemplo.txt
echo «Jose Torres Contreras» >> Ejemplo.txt
echo «Ana Sanjuan Leyva» >> Ejemplo.txt
- Comprobaremos el contenido del fichero ‘Ejemplo.txt‘ usando en la consola el siguiente comando:
more /home/pi/EjemplosTextos/Ejemplo.txt
1.3 Búsqueda de cadena por línea – find()
El método o función que usaremos se denomina ‘find()‘, esta función busca un trozo de cadena y nos devuelve como resultado su posición numérica conforme a la línea de texto analizada, el modo de empleo es tan sencillo como almacenar la línea de texto en una variable y usar el método find() indicando entre los paréntesis el texto que queremos buscar. A continuación os dejamos un ejemplo del modo en que se declara:
VariableTexto = «Este es el texto donde quiero buscar»
PosicionTexto = VariableTexto.find(«quiero»)
print(PosicionTexto)
Hay modos más fáciles de explicar pero por suerte para nuestros lectores nos mola el riesgo y el gustito que darnos cabezazos con las paredes, así pues, haremos lo siguiente… definiremos en el propio código el nombre a buscar, leeremos línea a línea el fichero creado en el punto 1.2 e imprimiremos el número de línea donde encontremos la primera coincidencia.
Esta sería la estructura del código resultante de nuestro reto:
TextoABuscar = «Torres»
PosicionTexto = -1
NumeroLinea = 0
with open(“/home/pi/EjemplosTextos/Ejemplo.txt”, ‘r’) as ObjFichero:
for line in ObjFichero:
NumeroLinea = NumeroLinea + 1
PosicionTexto = line.find(TextoABuscar)
if PosicionTexto >= 0:
print («El texto se encuentra en la línea %i» % NumeroLinea)
break
Nota: Si os surgen dudas con respecto a tipos de datos recomendamos dar un repaso al artículo ‘Python (Parte 3) – Tipos de datos‘
Vamos avanzado! de aquí a nada seremos cracks de la programación! 😀