Cómo encontrar una cadena en un archivo de texto usando Python

La mayoría de los desarrolladores están de acuerdo con el hecho de que Python es uno de los lenguajes de programación más influyentes y queridos de la actualidad. Python es un lenguaje de programación dinámico, de alto nivel, de código abierto e interpretado.

Permite la programación orientada a objetos así como la programación orientada a procedimientos. Muchos estudiantes en el campo del desarrollo comienzan su viaje de programación con Python.

 



Cadenas en Python

En Python, las cadenas tienen el tipo str. Una cadena en lenguaje Python representa la secuencia de caracteres. Las cadenas de Python son inmutables, lo que significa que no se pueden cambiar ni modificar una vez creadas.

Cuando se quiere cambiar o modificar una cadena, no se puede hacer con la cadena existente; debe crear una nueva cadena. Este artículo lo ayudará a aprender cómo encontrar una cadena en un archivo de texto utilizando el lenguaje de programación Python.

En primer lugar, asumiendo que ha instalado la última versión de Python (Python 3.9.1) en su máquina y tiene un IDE/editor para escribir código.

Antes de pasar al siguiente paso, ¡debe saber qué es un archivo!

Un archivo es un conjunto contagioso de bytes que guarda datos. Estos datos se plasman en un formato particular. Archivos de texto, imágenes, archivos ejecutables son ejemplos de diferentes tipos de archivos.

 

Cómo encontrar una cadena en un archivo de texto usando Python

Estoy dividiendo la tarea en dos formas diferentes. Primero, aprenderá cómo puede encontrar una cadena específica de un archivo de texto y luego le mostraré cómo encontrar varias cadenas con su número de línea correspondiente.

 

1. Encontrar una cadena de un archivo de texto

 

def check(my_file, string_search):
 # Opens my_file in read only mode
 with open(my_file, 'r') as read:
 # Read all the line in the file one by one
 for line in read:
 # Checki every lines if it contains the desired
string
 if string_search in line:
 return True
 return False

 

En el ejemplo anterior, la función de verificación toma dos argumentos, la ruta del archivo y la cadena deseada. Más tarde, abre el archivo de texto llamado my_file e itera sobre cada línea secuencialmente.

Si la línea contiene la cadena deseada, devuelve 'Verdadero' inmediatamente; si ninguna línea contiene la cadena deseada, devuelve 'Falso'.

Ahora supongamos que tiene un archivo de texto llamado demo.text con las siguientes líneas de texto y está buscando la cadena 'Adam'.

 

This is a demo line
I am looking for a string
That contains Adam
Thank you!

 

Suponga que tiene que verificar si este archivo contiene la cadena 'Adam' o no. Para hacerlo, escribamos el siguiente código.

 

if check('demo.txt', 'Adam'):
 print('True')
else:
 print('Sorry String not found in your given file').

 

Usando este código, obtendrá el resultado 'Verdadero' porque tiene la cadena 'Adam' disponible en su archivo de texto.

 

2. Encontrar una cadena que esté disponible en varias líneas junto con los números de línea

Echemos un vistazo a una secuencia de comandos diferente que podría resultar útil al intentar encontrar una cadena en un archivo de texto.

def search_string(file_name, string_search):
# Searches for a string that available in multiple lines
along with the line numbers
x = 0 # Line number
y = [] # List of serched result
# Opens the file in read only mode
with open(my_file, 'r') as read:
 for line in read:
 x += 1
 if string_search in line:
 y.append((x, line.rstrip()))
return y

 

Arrojemos algo de luz sobre el algoritmo del programa de Python anterior. En primer lugar, este programa también acepta dos argumentos, la ruta del archivo y la cadena deseada.

Posteriormente, crea una lista vacía de tuplas y. Por otra parte, abre el archivo en modo de solo lectura e itera sobre cada línea secuencialmente para obtener la cadena deseada.

Si encuentra la cadena en una línea, crea una tupla de número de línea y la línea y la agrega a una lista de tuplas y devuelve la lista de tuplas. Ahora suponga que su archivo de texto tiene las siguientes líneas

 

I am Adam
Demo line 1
Demo line 2
Adam writes the code
Thank you!

 

Puede obtener todas las líneas junto con los números de línea para la cadena dada 'Adam' escribiendo el código a continuación.

 

get_lines = search_string('demo.txt', 'Adam')
print('Lines with the String : ', len(get_lines))
for elem in get_lines:
print('Line Number = ', elem[0], ' : Line = ', elem[1])

 

deberías conseguir un producción como esto:

 

Lines with the String: 2
Line Number = 1 : Line = I am Adam
Line Number = 4 : Line = Adam writes the code

 

Conclusión

Las habilidades de manejo de archivos son esenciales como desarrollador de Python. Los desarrolladores a menudo necesitan acceder y manipular datos en archivos, ya sea leyéndolos o escribiendo en ellos.

Espero que este artículo lo ayude a encontrar cadenas en un archivo de texto usando Python.

¡Feliz codificación!