Que tal amigos, estoy empezando a programar en python tengo un inconveniente, con ordenar una serie de registros traídos de un archivo de texto.
Formato archivo txt:
Código:
Periodo|Ajuste Cierre
1|388.39
2|385.39
3|376.84
7|392.46
23|416.11
Con el siguiente algoritmo leo las líneas del txt y separo en listas de tipo string:
Código Python:
Ver originaldef cargar_txt(self): #Abre un archivo, lee y regresa un arreglo
archivo = open( self.path )
renglones = archivo.readlines()
renglones = [a.replace('\n', '') for a in renglones]
arreglo = map( lambda x: x.split('|'), renglones )
return arreglo
archivo.close()
Código Python:
Ver originalprint arreglo --> [ ['5|345.76'],['3|322.56'],['8|344.23'],['1|234.45'] ]
El problema es que aquí no puedo ordenar la lista arreglo por periodo, ya que los datos guardados son tipo string, y quiero que ordene como entero ascendentemente.
- Luego convierto los campos guardados en la lista a entero(periodo) y float ( ajuste de cierre), el problema que tengo es que no puedo ordenarlos de manera ascendente por periodo.
Es para la creación de un sistema de proyección lineal, necesito tener estos valores ordenados.
Código Python:
Ver originaldef on_btn_semana_clicked(self, widget, data=None):
self.path = str(self.b.get_object('path_entry').get_text())
matriz = self.cargar_txt()
print matriz
for periodo, ajuste_cierre in matriz:
periodo = int(periodo)
ajuste_cierre = float(ajuste_cierre)
self.campos = [periodo, ajuste_cierre]
print 'Periodo: %d Ajuste de Cierre: %f ' % (periodo,ajuste_cierre)
--->
Código:
Periodo: 1 Ajuste de Cierre: 388.390000
Periodo: 2 Ajuste de Cierre: 385.390000
Periodo: 3 Ajuste de Cierre: 376.840000
Periodo: 7 Ajuste de Cierre: 392.460000
Periodo: 23 Ajuste de Cierre: 416.110000
Muchas gracias por su atención y agradesco mucho su ayuda, saludos!