una txt texto matriz matrices linea leer importar especifica ejercicios como columnas archivos archivo python arrays list text

txt - Cómo leer un archivo de texto en una lista o una matriz con Python



leer una linea especifica de un archivo en python (6)

Entonces quiere crear una lista de listas ... Tenemos que comenzar con una lista vacía

list_of_lists = []

A continuación, leemos el contenido del archivo, línea por línea

with open(''data'') as f: for line in f: inner_list = [elt.strip() for elt in line.split('','')] # in alternative, if you need to use the file content as numbers # inner_list = [int(elt.strip()) for elt in line.split('','')] list_of_lists.append(inner_list)

Un caso de uso común es el de datos columnares, pero nuestras unidades de almacenamiento son las filas del archivo, que hemos leído una por una, por lo que es posible que desee transponer su lista de listas. Esto se puede hacer con la siguiente expresión idiomática

by_cols = zip(*list_of_lists)

Otro uso común es dar un nombre a cada columna

col_names = (''apples sold'', ''pears sold'', ''apples revenue'', ''pears revenue'') by_names = {} for i, col_name in enumerate(col_names): by_names[col_name] = by_cols[i]

para que pueda operar en elementos de datos homogéneos

mean_apple_prices = [money/fruits for money, fruits in zip(by_names[''apples revenue''], by_names[''apples_sold''])]

La mayor parte de lo que he escrito se puede acelerar usando el módulo csv , de la biblioteca estándar. Otro módulo de terceros es pandas , que le permite automatizar la mayoría de los aspectos de un análisis de datos típico (pero tiene una serie de dependencias).

Actualización Mientras en Python 2 zip(*list_of_lists) devuelve una lista de listas diferente (transpuesta), en Python 3 la situación ha cambiado y zip(*list_of_lists) devuelve un objeto zip que no es subscripible.

Si necesita acceso indexado puede usar

by_cols = list(zip(*list_of_lists))

eso le da una lista de listas en ambas versiones de Python.

Por otro lado, si no necesita acceso indexado y lo que desea es simplemente construir un diccionario indexado por nombres de columna, un objeto zip está bien ...

file = open(''some_data.csv'') names = get_names(next(file)) columns = zip(*((x.strip() for x in line.split('','')) for line in file))) d = {} for name, column in zip(names, columns): d[name] = column

Estoy tratando de leer las líneas de un archivo de texto en una lista o matriz en Python. Solo necesito poder acceder de forma individual a cualquier elemento de la lista o matriz después de que se haya creado.

El archivo de texto está formateado de la siguiente manera:

0,0,200,0,53,1,0,255,...,0.

Donde el ... está arriba, el archivo de texto actual tiene cientos o miles de elementos más.

Estoy usando el siguiente código para tratar de leer el archivo en una lista:

text_file = open("filename.dat", "r") lines = text_file.readlines() print lines print len(lines) text_file.close()

El resultado que obtengo es:

[''0,0,200,0,53,1,0,255,...,0.''] 1

Aparentemente está leyendo todo el archivo en una lista de solo un elemento, en lugar de una lista de elementos individuales. ¿Qué estoy haciendo mal?


También puedes usar numpy loadtxt como

from numpy import loadtxt lines = loadtxt("filename.dat", comments="#", delimiter=",", unpack=False)


Tendrás que dividir tu cadena en una lista de valores usando split()

Asi que,

lines = text_file.read().split('','')


El método file.readLines () de python devuelve una lista de las líneas en el archivo:

f = open(''file_name.ext'', ''r'') x = f.readlines() f.close()

Ahora debería poder iterar a través del conjunto de líneas x.

Si desea usar el archivo y no tiene que recordar cerrarlo después, haga esto:

with open(''file_name.ext'', ''r'') as f: x = f.readlines()


Esta pregunta se pregunta cómo leer los contenidos de valores separados por comas de un archivo en una lista iterable:

0,0,200,0,53,1,0,255,...,0.

La forma más fácil de hacerlo es con el módulo csv siguiente manera:

import csv with open(''filename.dat'', newline='''') as csvfile: spamreader = csv.reader(csvfile, delimiter='','')

Ahora, puede iterar fácilmente sobre spamreader como este:

for row in spamreader: print('', ''.join(row))

Ver documentation para más ejemplos.


with open(''D:/python/positive.txt'', ''r'') as myfile: data=myfile.read().replace(''/n'', '''')