Leer archivos en Python por línea y por palabra

Leer archivos en Python por línea y por palabra

Veremos cómo leer archivos en Python para analizarlo por línea o por palabra. Mostramos un ejemplo de cómo encontrar la línea más larga de un archivo.

Leer archivos en Python

Éste artículo también está explicado en video. Míralo aquí: https://youtu.be/5bA0rO8yd8E

Mucha de la información disponible para el Análisis de datos está disponible en archivos de texto.

Para leer archivos de texto en Python usamos alguno de los siguientes 3 procedimientos, donde guardamos los datos en…

1. … una lista, donde cada elemento es una linea del archivo
2. … una lista, donde cada elemento es una palabra del archivo
3. … una multilista, donde cada elemento es una lista que contiene una linea del archivo y donde cada elemento de esa sublista es una palabra del archivo.

El método a utilizar dependerá de la forma en cómo queramos analizar los datos.

Veamos el primer procedimiento.

Leer archivos en Python: Guardar lineas completas en una lista

Código en Python:

print ("+++ 1 ++++")
datos = []
with open("datos.txt") as fname:
	lineas = fname.readlines()
	for linea in lineas:
		datos.append(linea.strip('\n'))
print (datos)
print ("+++")

Vamos a guardar las lineas en una lista llamada datos. Abrimos el archivo con with open(“datos.txt”) as fname, donde “datos.txt” es el nombre del archivo. Ahora tenemos una variable llamada fname apuntando al contenido del archivo. Utilizamos el método readlines() para leer todas las lineas. Si aquí imprimimos la lista lineas veremos que también extrajo el carácter de salto de línea. Usando un for, recorremos toda la lista para quitar (strip) el caracter de salto de línea (‘\n’). El resultado es una lista donde cada elemento es una línea del archivo.

Leer archivos en Python: Guardar cada palabra como un elemento de una lista

Código en Python:

print ("*** 2 ***")
datos2 = []
with open("datos.txt") as fname:
	for lineas in fname:
		datos2.extend(lineas.split())
		print ("i" , datos2)
print (datos2)
print ("***")

En éste caso abrimos el archivo de la misma forma como lo hicimos en el procedimiento anterior. Recorremos el objeto fname directamente con un for. Usamos lineas.split() para separar cada linea usando el caracter de espacio en blanco, por lo que obtenemos una lista donde cada elemento es una de las palabras de esa línea. Usamos el método extend para copiar todo el contenido de esa lista de palabras a otra lista llamada datos2. Al final obtenemos una lista donde cada elemento es una palabra del archivo.

Leer archivos en Python: Guardar en multilistas

Código en Python:

print ("*** 3 ***")
datos3 = []
with open("datos.txt") as fname:
	for lineas in fname:
		datos3.append(lineas.split())
print (datos3)
print ("***")

Éste procedimiento es muy similar al anterior, solo cambiamos el método extend por append. Son embargo, el resultado sí es bastante diferente: cada línea del archivo de texto se guarda en una lista donde cada elemento es una palabra. Entonces tenemos todo el archivo en una multilista donde cada elemento es una lista que contiene todas las palabras de una fila.

Ejemplo: Encontrarla línea más larga de un archivo

Código en Python:

def linea_mas_larga(nombre):
	with open(nombre) as fname:
		lineas = [linea.strip('\n') for linea in fname.readlines()]
	lmaslarga = lineas[0]
	for linea in lineas:
		if len(linea) > len(lmaslarga):
			lmaslarga = linea
	return lmaslarga

print ("------")
print ("La linea con mayor longitud es: ")
print (linea_mas_larga("datos.txt"))

Explicación: Usamos el primero de los tres procedimientos descritos arriba. Para simplificar usamos una expresión generadora. En vez de:

for linea in lineas:
		datos.append(linea.strip('\n'))

usamos:

lineas = [linea.strip('\n') for linea in fname.readlines()]

El resultado será el mismo. Una vez teniendo todo en una lista, podemos recorrer la lista comparando la longitud de cada una con respecto a las demás. Comenzamos tomando la longitud de la primera línea (lmaslarga = lineas[0]). Y recorremos todas las líneas comparando si alguna es más larga. Si ése es el caso, esa será nuestra nueva línea más larga.

Ejemplo: Devolver las últimas n líneas de un archivo.

Queremos hacer algo similar al comando tail que devuelve las últimas n líneas de un archivo de texto.

Código en Python:

def leer_ultimas_lineas(nombre, n):
	with open(nombre) as fname:
		lineas = [lineas.strip('\n') for lineas in fname.readlines()]
	return lineas[-n:]


print ("-----")
print ("Ultimas 2 lineas del archivo: ")
print (leer_ultimas_lineas("datos.txt",2))

Explicación. Leemos el archivo de texto y extraemos fila por fila copiando cada fila completa en una lista. (Mismo procedimiento usado en el ejemplo anterior). Devolvemos la lista lineas haciendo slicing, donde indicamos que solo queremos desde la fila -n (contando desde el último elemento hacia atrás), hasta el final de la lista. (El slicing en Python se explica en ésta entrada: Impresión de cadenas en Python)

Video

Éste artículo también está explicado en video. Te lo dejo a continuación:

¿Qué te pareció este artículo?
  • Regular 
  • Poco informativo 
  • No era lo que buscaba 
  • Interesante 
  • Excelente 
(Visto 42.560 veces)
Facebooktwitterlinkedinmail

Tu comentario

opiniones

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *







5 + = 12