¿Leer líneas que contienen enteros de un archivo en Python?

Tengo un formato de archivo como este:

9 8 1 3 4 1 ... ... 

Ahora, quiero obtener cada línea como tres enteros.

Cuando utilicé

 for line in f.readlines(): print line.split(" ") 

El guión imprimió esto:

 ['9', '8', '1\r\n'] ['3', '4', '1\r\n'] ... ... 

¿Cómo puedo obtener cada línea como tres enteros?

    Use el código que tiene y aborde su pregunta específica sobre cómo convertir su lista a números enteros:

    Puede iterar a través de cada línea y convertir las cadenas a int con el siguiente ejemplo usando la comprensión de lista :

    Dado:

     line =['3', '4', '1\r\n'] 

    entonces:

     int_list = [int(i) for i in line] 

    dará una lista de enteros

     [3, 4, 1] 

    que luego puede acceder a través de subíndices (0 a 2). p.ej

    int_list[0] contiene 3 ,

    int_list[1] contiene 4 ,

    etc.


    Una versión más simplificada para su consideración:

     with open('data.txt') as f: for line in f: int_list = [int(i) for i in line.split()] print int_list 

    La ventaja de usar with es que cerrará automáticamente su archivo cuando termine, o si encuentra una excepción.

    ACTUALIZACIÓN :

    Según sus comentarios a continuación, si desea los números en 3 variables diferentes, diga a , c , puede hacer lo siguiente:

      for line in f: a, b, c = [int(i) for i in line.split()] print 'a = %d, b = %d, c = %d\n' %(a, b, c) 

    y obtén esto:

      a = 9, b = 8, c = 1 

    Esto cuenta con que haya 3 números en cada línea.

    Aparte:

    Tenga en cuenta que en lugar de “list comprensión” (LC) también puede usar una “expresión generadora” (GE) de esta forma:

      a, b, c = (int(i) for i in line.split()) 

    para su problema particular con 3 enteros esto no hace mucha diferencia, pero lo muestro para completar. Para problemas más grandes, LC requiere más memoria, ya que genera una lista completa en la memoria a la vez, mientras que GE genera un valor uno por uno según sea necesario. Esta pregunta del generador de preguntas frente a la comprensión de la lista le dará más información si tiene curiosidad.

     with open("myfile.txt") as f: for line in f: int_list = [int(x) for x in line.split()] 

    No dices lo que quieres hacer con la lista de enteros, puede haber una mejor manera de iterar sobre ellos, dependiendo.

    Si “necesita los valores como tres variables diferentes,” entonces ”

     a, b, c = int_list 

    aunque también podrías usar:

     int_list[0] int_list[1] int_list[2] 

    como se desee.

     line.strip().split(" ") 

    haría.

    más completo, con todas las líneas intactas en una cadena grande:

     data = f.read().strip() # loose final \n [ int(x.split(" ")) for x in data.split('\n')] 

    Te daría una lista con las respuestas que deseas para cada línea.

    Si quieres almacenar los enteros en tres variables:

     with open('data1.txt') as f: for line in f: a,b,c=(int(x) for x in line.split()) print a,b,c 

    salida:

     9 8 1 3 4 1 

    Este bloque de código debería resolver su problema:

     f = open(filepath) for line in f: intList = map(int, line.strip().split()) print intList f.close()