2012-03-25 9 views
6

Tengo un archivo en el siguiente formato:Python leído en cadena a partir del archivo y dividirlo en valores

995957,16833579 
995959,16777241 
995960,16829368 
995961,50431654 

quiero leer en cada línea, pero dividir los valores en los valores apropiados. Por ejemplo, la primera línea se divide en:

x = 995957 
y = 16833579 

Desde su una cadena cuando lo lea y lo desea convertirlos a un int y dividirlas, ¿cómo exactamente iba a ir haciendo esto? Cualquier ayuda sería apreciada.

Gracias!

+0

¿Qué código ha probado hasta ahora? –

Respuesta

14

Algo como esto - para cada línea leída en cadena de la variable a:

>>> a = "123,456" 
>>> b = a.split(",") 
>>> b 
['123', '456'] 
>>> c = [int(e) for e in b] 
>>> c 
[123, 456] 
>>> x, y = c 
>>> x 
123 
>>> y 
456 

Ahora usted puede hacer lo que sea necesario con x y y que le sean asignadas, que son números enteros.

+0

'map (int, a.split (", "))' es genial –

1
>>> [[int(i) for i in line.strip().split(',')] for line in open('input.txt').readlines()] 
[[995957, 16833579], [995959, 16777241], [995960, 16829368], [995961, 50431654]] 
10

Uso open(file, mode) de archivos. El modo es una variante de 'r' para leer, 'w' para escribir, y posiblemente 'b' agregado (por ejemplo, 'rb') para abrir archivos binarios. Vea el enlace a continuación.

Usa open con readline() o readlines(). El primero devolverá una línea a la vez, mientras que el segundo devolverá una lista de las líneas.

Use split(delimiter) para dividir la coma.

Por último, debe convertir cada elemento en un número entero: int(foo). Probablemente quieras rodear tu yeso con un bloque try seguido de except ValueError como en el siguiente enlace.

También puede utilizar 'asignación múltiple' para asignar a y b a la vez:

>>>a, b = map(int, "2342342,2234234".split(",")) 
>>>print a 
2342342 
>>>type(a) 
<type 'int'> 

python io docs

python casting

+0

Gran respuesta ... –

14

Me gustaría hacer algo como:

filename = "mynumbers.txt" 
mynumbers = [] 
with open(filename) as f: 
    for line in f: 
     mynumbers.append([int(n) for n in line.strip().split(',')]) 
for pair in mynumbers: 
    try: 
     x,y = pair[0],pair[1] 
     # Do Something with x and y 
    except IndexError: 
     print "A line in the file doesn't have enough entries." 

El abierto con se recomienda en http://docs.python.org/tutorial/inputoutput.html s Como se asegura de que los archivos se cierren correctamente, incluso si se produce una excepción durante el procesamiento.

Cuestiones relacionadas