Leer Cadenas

NeCuDeCo necudeco en gmail.com
Jue Mayo 11 14:47:53 CEST 2006


de q podria, si se podria.

Pero con las exp regulares, la solucion se vuelve mas elegante y sencilla.

Saludos

On 5/11/06, Jordi Funollet <jordi.f en ati.es> wrote:
>
> Hernan M Foffani dixit:
> > Es como lo había propuesto Arnau en un mail anterior:
> >
> >    import re
> >    cadena = "Ca2CO3"
> >    atomos = {"C":12,"H":1,"Ca":40,"O":16}
> >    componentes = re.findall("([A-Z][a-z]*)(\d*)", cadena)
> >    peso = 0
> >    for elemento, numero in componentes:
> >        try: numero = int(numero)
> >        except: numero = 1
> >        peso += atomos[elemento] * numero
> >    print cadena, peso
>
> Ca2CO3 48
>
>
> ¿48? ¿Eso es muy poco, no? ;-)
>
> El parseado se podria hacer sin expresiones regulares.
>
>
>         class Atomizado:
>                 def __init__(self, molecula):
>                         self.atomizado = []
>                         [self.__coloca(c) for c in molecula]
>
>                 def __coloca (self, c):
>                         if c.isupper():
>                                 if len(self.atomizado) and self.atomizado
> [-1][1]==0:
>                                         self.atomizado[-1][1] = 1
>                                 self.atomizado.append ([c, 0])
>                         elif c.islower():
>                                 self.atomizado[-1][0] += c
>                         elif c.isdigit():
>                                 self.atomizado[-1][1] = 10*self.atomizado[-1][1]
> + int(c)
>
>
>         m = Atomizado('Ca8H10NO2')
>         print m.atomizado
>
>         [['Ca', 8], ['H', 10], ['N', 1], ['O', 2]]
>
>
> --
> ##############################
> ### Jordi Funollet
> ### http://www.terraquis.net
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
>
>


-- 
--------------------------
NeCuDeCo
http://necudeco.blogsome.com
Your Jugdment Day is NOW




Más información sobre la lista de distribución Python-es