Saltar al contenido

Lectura de columnas específicas de un archivo de texto en python

Esta es la respuesta más acertada que encomtrarás aportar, sin embargo mírala pausadamente y analiza si se adapta a tu proyecto.

f=open(file,"r")
lines=f.readlines()
result=[]
for x in lines:
    result.append(x.split(' ')[1])
f.close()

Puedes hacer lo mismo usando una lista de comprensión.

print([x.split(' ')[1] for x in open(file).readlines()])

Documentos en split()

string.split(s[, sep[, maxsplit]])

Devolver una lista de las palabras del string s. Si el segundo argumento opcional sep está ausente o es Ninguno, las palabras se separan mediante cadenas arbitrarias de caracteres de espacio en blanco (espacio, tabulador, nueva línea, retorno, salto de página). Si el segundo argumento sep está presente y no es Ninguno, especifica un string para ser utilizado como el separador de palabras. La lista devuelta tendrá entonces un elemento más que el número de ocurrencias no superpuestas del separador en el string.

Entonces, puedes omitir el espacio que usé y hacer solo x.split() pero esto también eliminará las pestañas y las líneas nuevas, tenga en cuenta eso.

Tiene un archivo delimitado por espacios, así que use el módulo diseñado para leer archivos de valores delimitados, csv.

import csv

with open('path/to/file.txt') as inf:
    reader = csv.reader(inf, delimiter=" ")
    second_col = list(zip(*reader))[1]
    # In Python2, you can omit the `list(...)` cast

los zip(*iterable) El patrón es útil para convertir filas en columnas o viceversa. Si está leyendo un archivo por filas…

>>> testdata = [[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]]

>>> for line in testdata:
...     print(line)

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

…pero necesita columnas, puede pasar cada fila al zip función

>>> testdata_columns = zip(*testdata)
# this is equivalent to zip([1,2,3], [4,5,6], [7,8,9])

>>> for line in testdata_columns:
...     print(line)

[1, 4, 7]
[2, 5, 8]
[3, 6, 9]

Sé que esta es una vieja pregunta, pero nadie mencionó que cuando sus datos parecen un arrayel loadtxt de numpy es útil:

>>> import numpy as np
>>> np.loadtxt("myfile.txt")[:, 1]
array([10., 20., 30., 40., 23., 13.])

Si piensas que ha sido de provecho este artículo, te agradeceríamos que lo compartas con el resto desarrolladores y nos ayudes a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

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