Python - leer txt por fila y columnas

 
Vista:

leer txt por fila y columnas

Publicado por diego (2 intervenciones) el 21/09/2006 17:05:18
hola quisiera saber como leo un archivo txt x filas y columnas y almacenar los datos para posteriormente hacer operaciones con ellos como en exel el que tenga un codigo sencillo "para pricipiante" por favor puede ponerlo o enviarlo al mail gracias

x ejemplo

Productividad del personal 24,0% 25,0% 11,7%
Rentabilidad en ventas 15,1% -28,2% 66,2%
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:leer txt por fila y columnas

Publicado por joaquin (61 intervenciones) el 21/09/2006 23:32:59
Hola:
Para leer un archivo línea a línea es más sencillo que hacerlo por columnas, para hacerlo línea a línea haz lo siguiente:

1
2
3
file=open('nombre del archivo','r')
infile=file.readlines()
print infile
cuando hagas esto habrás leido todo el contenido del archivo línea a línea.

si quieres leer solo una línea del archivo, puedes usar:
1
infile=file.readline()

esto es lo más básico, ahora biene algo más potente, ya que si quieres leer un archivo de texto por las columnas que contiene, necesitarás un identificador que te las separe, por ejemplo la ",", o los tabuladores "\t".
Para ser más preciso tendrías que hacer algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
datos1=[]
datos2=[]
datos3=[]
file=open('nombre del archivo','r')
contenido=file.readlines()
for i in range (0,len(content),1): (usaré como separador el tabulador)
   dato1=contenido[i].find('\t')
   dato2=contenido[i].find('\t',dato1+1)
   dato3=contenido[i].find('\t',dato2+1)
    .....   Así sucesivamente hasta que posiciones todos los separadores (en el caso de que tu archivo tenga un número de columnas fijo)
   valor1=float(contenido[i][0:dato1]) (se supone que un número po eso uso float)
   valor2=float(contenido[i][dato1+1:dato2])
   valor3=float(contenido[][dato2+1:dato3])
   ....
Por último los incorporas a las listas para trabajar posteriormente con ellos:
1
2
3
datos1.append(valor1)
datos2.append(valor2)
datos3.append(valor3)

si quisieras sumar los valores
resultado_suma=datos1[0]+datos2[0]+datos3[0] ;el 0 hace referencia al primer número de cada una de mis listas, si quisiera usar el segundo número, tendría que poner '1' en vez de '0' y así sucesivamente.

Bueno no me enrollo más, no se si te he ayudao, pero la segunda parte es algo más compleja y tendrás que investigar un poco por tu cuenta para generar código que permita trabajar con tus datos de la forma que tu deseas.

Un saludo

joaquin
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:leer txt por fila y columnas

Publicado por Daniel (19 intervenciones) el 27/09/2006 01:06:50
esto es lo más básico, ahora biene algo más potente, ya que si quieres leer un archivo de texto por las columnas que contiene, necesitarás un identificador que te las separe, por ejemplo la ",", o los tabuladores "\t".
Para ser más preciso tendrías que hacer algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
datos1=[]
datos2=[]
datos3=[]
file=open('nombre del archivo','r')
contenido=file.readlines()
for i in range (0,len(content),1): (usaré como separador el tabulador)
dato1=contenido[i].find('\t')
dato2=contenido[i].find('\t',dato1+1)
dato3=contenido[i].find('\t',dato2+1)
..... Así sucesivamente hasta que posiciones todos los separadores (en el caso de que tu archivo tenga un número de columnas fijo)
valor1=float(contenido[i][0:dato1]) (se supone que un número po eso uso float)
valor2=float(contenido[i][dato1+1:dato2])
valor3=float(contenido[][dato2+1:dato3])
Todo esto se puede resumir con un metodo que tienen las cadenas, es decir lees una linea de la forma conocida, y ahora la tienes como cadena. Usando el metodo conviertes la cadena en una lista con los componentes de la cadena usando los espacios en blanco como separador:

ejemplo:

1
2
contenido='numero   30000   001112     1144    12555     47888 '
lista=contenido.split()

ahora en lista hay`
['numero',30000,001112,1144,....etc]
asi puedes crear una matriz facilmente y hacer sencillamente las operaciones con los valores
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer txt por fila y columnas

Publicado por Rafael (3 intervenciones) el 17/07/2009 21:24:58
Hola aqui va de nuevo que no se porque en la ocasion anterior el codigo no conservo los espacios necesarios

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Funcion para la lectura de los ficheros
def readinputdata(filename):
        fichero=open(filename,'r')
          f=[]
          line='0'
          while len(line)>0:
             line=array(fichero.readline().split()).astype(float)
             if len(line)>0 :
                 f.append(line)
          fichero.close()
          return array(f)
 
# Entrada de Datos
 
data=readinputdata("fichero.dat")
 
columna=data[:,1]
print columna

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer txt por fila y columnas

Publicado por Francisco javier (1 intervención) el 15/07/2009 03:13:36
Que hay yo tengo el mismo problema con eso de leer un archivo de texto que lee columnas y filas para despues usarlas pero no entiendo todo el codigo porq no se como empieza casi no se de manejo de archivos en C espero y me puedan ayudar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer txt por fila y columnas

Publicado por rafa (3 intervenciones) el 17/07/2009 05:58:21
Tengo un codigo mucho mas sencillo definiendo una funcion en python que el que aparece aqui, escribeme a mi correo para mañana acordarme y publicarlo aqui,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer txt por fila y columnas

Publicado por rafael (3 intervenciones) el 17/07/2009 21:18:08
Hola esta es una funcion con la cual puedes leer un fichero ascii de n columnas en Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Funcion para la lectura de los ficheros
def readinputdata(filename):
       fichero=open(filename,'r')
       f=[]
       line='0'
       while len(line)>0:
        line=array(fichero.readline().split()).astype(float)
        if len(line)>0 :
            f.append(line)
       fichero.close()
       return array(f)
# Entrada de Datos
 
data=readinputdata("datos.dat") # Aqui pones el nombre del fichero de entrada
 
columna1=data[:,0]
columna2=data[:,1]
 
print columna1
Espero te sea de utilidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

RE:leer txt por fila y columnas

Publicado por fito (1 intervención) el 23/01/2012 03:55:52
gracias, tu código me sirvió ;D de maravillas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer txt por fila y columnas

Publicado por alexandra (1 intervención) el 09/05/2017 03:15:04
Hola
Tengo una inquietud quiero construir un programa que me permita leer un archivo de texto .dat y al aplicarle una ecuación a cada dato construir otro archivo de texto con la información.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer txt por fila y columnas

Publicado por Yo (1 intervención) el 25/01/2020 07:49:21
1
2
3
file=open("datos.dat","r")
contenido=file.read()
resultado=tuple(map(float,contenido.split("\n")))
Nosé si te sirva a estas alturas pero espero que aporte en algo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer txt por fila y columnas

Publicado por Jose (1 intervención) el 15/04/2020 19:08:56
Tengo un archivo .dat con varias filas y columnas, el tamaño de las columnas no es el mismo varía según el indicador que se encuentre en la primera columna y necesito leer e insertar los datos en una BD, ¿eso es posible?

Ejemplo:

1asas5656ee3852258-
2asas335656jjjee3852258-
3asa5656ee385jjj2258-

Los indicadores son 1, 2 y 3 y según sea el caso la primera columna es de 1 carácter, la segunda puede tener 3, la cuarta 4 y así sucesivamente; lo que determina la cantidad de caracteres por columna es el indicador y no todas las columnas son del mismo tamaño.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar