Por alguna razón, decidí guardar mi lista de datos como una cadena. Si yo uso

f = open('tarfile.txt')
for line in f.readlines():
    print line
f.close()

mi salida se parece a:

[  53.7775   13.4375   26.525    48.63    125.      185.      653.    ]    
[  53.7775    13.33625   26.73375   48.68375  125.       185.       653.     ]    
[  53.7775    13.325     27.11375   48.8875   126.       187.       653.     ]    
[  53.7775    13.43625   27.3175    48.92875  126.       187.       653.     ]    
[  53.7775    14.4825    33.07375   51.7325   141.       202.       595.     ]

Me gustaría leer este tipo de datos en 2D de la matriz. He buscado y probado diversos métodos, tales como la salmuera, eval, json, etc, pero nada funcionó

OriginalEl autor user1532056 | 2012-10-23

4 Comentarios

  1. 4

    Si usted está usando numpy (o que no cuenta con él), usted puede hacer numpy.loadtxt('tarfile.txt', usecols=range(1,8)). Es especialmente bueno si usted va a querer sus datos en 2-d numpy matriz de todos modos.

    Muchas gracias. Exactamente lo que yo necesitaba. Funcionó a la perfección.

    OriginalEl autor Alok Singhal

  2. 2

    Primer lugar, usted necesita para traducir el [] a algo de python puede manejar:

    import string
    table = string.maketrans('[]','  ')

    Ahora usted puede iterar a través de su archivo, la traducción, la división y flotante:

    for line in f:
        print [float(x) for x in line.translate(table).split()]

    Si usted está garantizado que [ es el primer carácter y ] es el último carácter de la línea, usted puede hacerlo en rodajas:

    print [float(x) for x in line[1:-2].split()]  #-2 accounts for the newline too.

    OriginalEl autor mgilson

  3. 2

    Mi conjetura es que el archivo de entrada contiene flota separados por espacios en blanco.

    Para leer un archivo, tira de la [ y ], dividir cada línea, y el mapa de cada campo a un flotador instancia.

    records = []
    for line in f:
        record = [float(field) for field in line.strip().lstrip('[').rstrip(']').split()]
        records.append(record)

    OriginalEl autor

  4. 0

    Creo regexp es la mejor forma de analizar los datos:

    import re
    pattern = r'\d+.\d*'
    array = []
    for line in open('tarfile.txt'):
        array.append(re.findall(pattern, line))

    OriginalEl autor Emmanuel

Dejar respuesta

Please enter your comment!
Please enter your name here