2010-06-25 30 views

Respuesta

11

Una forma de hacer esto, suponiendo que las sublistas son en líneas separadas:

with open("filename.txt", 'r') as f: 
    data = [map(int, line.split()) for line in f] 

Tenga en cuenta que la declaración with no se hizo oficial hasta Python 2.6. Si está utilizando una versión anterior, tendrá que hacer

from __future__ import with_statement 
+0

+1 esto es lo más parecido a la forma en que lo haría, y creo que el mejor ejemplo de "mejores prácticas" (lo que sea que eso signifique) de las 5 respuestas aquí. –

2

tuplas = [tupla (int (s) de s en linea.split()) para la línea en abierto ("archivo.txt") .readlines()]

Me gusta Jeff's map(int, line.split()), en lugar del generador interno.

+0

¿De esta forma realmente almacena una línea dividida en una tupla? ¿Puedes explicar un poco más? Gracias. – Stan

+1

En realidad, esto le dará una lista de listas, no una lista de tuplas (porque 'str.split' devuelve una lista). Básicamente lo que hace es abrir el archivo, leer en sus líneas, luego iterar a través de ellos ('para tup in ...') y dividir cada uno en espacios en blanco. –

+0

Entonces, ¿cómo almacenar en una tupla? Esa es parte de mi pregunta original. Gracias. – Stan

1

¿Quiere decir, como esto?

actualización

Sólo convertir cada cadena en int

string = """1 2 3 
4 5 6 
7 8 9""" 

data = [] 
for line in string.split("\n"): #split by new line 
    data.append(map(int, line.split(" "))) # split by spaces and add 

print(data) 

Salida:

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

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

Da daaaa !!!

+0

no, quiero guardar un entero en mi lista, no en una cadena. – Stan

+0

¿Y puedes deducirlo de mi ejemplo? ... es fácil ... – OscarRyz

+0

Termino usando la función de mapeo. Aún no descubrió otra forma de convertir todo lo leído en cadena en un entero. – Stan

1
def getInts(ln): 
    return [int(word) for word in ln.split()] 

f = open('myfile.dat') 
dat = [getInts(ln) for ln in f] 
3

Si se encuentra frente a matrices o tablas de números, puedo sugerir paquete numpy?

import numpy as np 
data = np.loadtxt(input_filename) 
Cuestiones relacionadas