Leer Cadenas

Miguel Angel magmaxlistas en gmail.com
Vie Mayo 12 16:26:59 CEST 2006


A mí me gusta mucho una aplicación llamada "kodos".

En ella he metido la expresión regular "([A-Z][a-z]|[A-Z])([0-9]*)" y me
ha dado el siguiente código de ejemplo:

-----------------------------------

import re

# common variables

rawstr = r"""([A-Z][a-z]|[A-Z])([0-9]*)"""
embedded_rawstr = r"""(?x)([A-Z][a-z]|[A-Z])([0-9]*)"""
matchstr = """Ca2CO3"""

# method 1: using a compile object
compile_obj = re.compile(rawstr,  re.VERBOSE)
match_obj = compile_obj.search(matchstr)

# method 2: using search function (w/ external flags)
match_obj = re.search(rawstr, matchstr,  re.VERBOSE)

# method 3: using search function (w/ embedded flags)
match_obj = re.search(embedded_rawstr, matchstr)

# Retrieve group(s) from match_obj
all_groups = match_obj.groups()

# Retrieve group(s) by index
group_1 = match_obj.group(1)
group_2 = match_obj.group(2)

-----------------------------------

Cada vez que quieras un par [elemento,número] (si es que hay número),
tendrás que buscar en el grupo siguiente.

Espero que te sirva!!!! 

El mié, 10-05-2006 a las 21:56 +0200, Tny escribió:
> Me gustaría ver cómo se haría con expresiones regulares.
> Yo programo a lo bestía y soy consciente de que hay un montón de cosas 
> que facilitan el trabajo y que desconozco completamente,
> si alguno se anima y envía el código para hacer esto de las moléculas 
> mediante expresiones regulares, veo si realmente supone una ventaja y me 
> animo a mirarlo.
> gracias
> 
> 
> Hernan M Foffani escribió:
> > On 5/10/06, NeCuDeCo <necudeco en gmail.com> wrote:
> >> Obviamente, necesitarias un diccionario para tener los pesos de cada 
> >> atomo y
> >> otras cosas mas
> >> Pero para poder determinar q atomos existen y en que proporciones 
> >> dentro de
> >> una molecula yo usaria Exp Regualres, ...
> >
> > Asi es.  Esa fue me metida de pata.  En no recordar (¡glup!) que
> > el simbolo de un atomo es una letra mayuscula o una mayuscula y
> > una minuscula. ¡Simple!
> >
> > -Hernán
> >
> >> ..., luego con esa info me voy al
> >> diccionario y saco los pesos y nada mas m,ultiplico :P
> >>
> >>
> >> On 5/10/06, Tny <a.porrua en gmail.com> wrote:
> >> >
> >> > Hola Jean, supongo que lo primero es leer la cadena, no he visto que
> >> > los otros correos hiciesen eso, (o no lo entendí),
> >> > puedes transformar la cadena en una lista de tuplas
> >> > Ca2CO3 ==> [(Ca,2),(C,1),(O,3)]
> >> > Yo lo haría así, igual te inspira para que lo hagas a tu modo ;-)
> >> >
> >> > def procesar(cad):
> >> >     "Transforma cad a lista de tuplas"
> >> >     r=[]
> >> >     z=len(cad)
> >> >     i=0
> >> >     while i<z:
> >> >     j=i+1
> >> >     while j<z and cad[j].islower():
> >> >         j=j+1
> >> >     k=j
> >> >     while k<z and not cad[k].isalpha():
> >> >             k=k+1
> >> >         if k<>j:
> >> >             r.append((cad[i:j],int(cad[j:k])))
> >> >         else:
> >> >             r.append((cad[i:j],1))
> >> >         i=k
> >> >     return r
> >> >
> >> > La segunda parte (cotejar la lista con el diccionario) te lo dejo a 
> >> tí,
> >> > si no te aclaras vuelve a preguntar.
> >> >
> >> >
> >> > Jean Carlos Rodrìguez escribió:
> >> > > Hola lista, tengo una duda sobre como puedo leer una
> >> > > cadena, bueno les comento un poco es para sacar el
> >> > > peso molecular de un compuesto ejemplo la cadena puede
> >> > > ser:
> >> > > Ca2CO3
> >> > > Debo separar Mayusculas con minusculas, numeros y solo
> >> > > Mayusculas para poder buscar los atomos en un
> >> > > diccionario
> >> > >
> >> > > atomos = {C:12,H:1,Ca:40,O:16}
> >> > > Pero no se como vincular para solo obtener lo que
> >> > > tengo en el diccionario, no se si es algo trivial,
> >> > > pero llevo varios dias dandale vueltas a esto, si
> >> > > alguien sabe algo o como se lo agradeceria.
> >> > > He visto el modulo string,
> >> > > Gracias
> >> > > Jean Carlos
> >> > >
> >> >
> 
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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