Tengo un archivo de texto grande que se lee como

Kyle 40
Greg 91
Reggie 58

¿Cómo convertiría esto a una matriz que se ve así?

array = ([Kyle, 40], [Greg, 91], [Reggie, 58])

Gracias de antemano.

1
Keith Michael 12 jul. 2011 a las 19:37

4 respuestas

La mejor respuesta

Asumiendo la entrada adecuada:

array = []
with open('file.txt', 'r') as f:       
   for line in f:
      name, value = line.split()
      value = int(value)
      array.append((name, value))       
6
Manny D 12 jul. 2011 a las 16:05

Alternativa a la solución de Manny:

with open('file.txt', 'r') as f:       
   myarray = [line.split() for line in f]
  • for line in f is más idiomática que for line in f.read()

La salida tiene la forma:

myarray = [['Kyle', '40'], ['Greg', '91'], ['Reggie', '58']]
1
joaquin 12 jul. 2011 a las 16:01

Abra el archivo, lea en cada línea, quite el carácter de nueva línea del extremo, divídalo en el carácter de espacio, luego convierta el segundo valor en un int:

array = [(name, int(number)) for name, number in
         (line.strip().split() for line in open('textfile'))]
0
Kirk Strauser 12 jul. 2011 a las 15:47

... O incluso más corta que la presentada en la respuesta aceptada:

array = [(name, int(i)) for name,i in open(file)]
1
phynfo 12 jul. 2011 a las 16:35