es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

acciones químicas para la degradación de moléculas

Me gustaría crear un diccionario para separar todos los elementos de una fórmula molecular.
Intenté usar el módulo re.

Formula=”C16H21NO2Na3″

pat = re.compile(‘(?P[A-Z][a-z]+)[0-9]+(?P[0-9]+)’)
molecule= pat.findall(Formula)
print (molecule)

Espero este resultado:

{‘C’: 16, ‘H’: 21, ‘N’: ”, ‘O’: 2, ‘Na’: 3}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear un diccionario que divida todos los elementos de una fórmula molecular, se puede utilizar el siguiente código en Python:

    import re
    
    Formula = "C16H21NO2Na3"
    
    pat = re.compile(r'([A-Z][a-z]*)(\d*)')
    molecule = pat.findall(Formula)
    
    elements = {}
    for element in molecule:
        name, num = element
        if num == '':
            num = '1'
        elements[name] = int(num)
    
    print(elements)
    

    Esto debería dar como resultado:

    {'C': 16, 'H': 21, 'N': 1, 'O': 2, 'Na': 3}
    

    Aquí, primero definimos la fórmula molecular como una cadena (Formula). Luego usamos el módulo re para compilar un patrón de expresión regular que coincidirá con cada elemento de la fórmula, definido como una letra mayúscula (seguida de cero o más letras minúsculas) seguida de cero o más dígitos.

    Luego usamos el método findall del patrón compilado para buscar todas las ocurrencias de este patrón en la cadena de la fórmula, lo que devuelve una lista de tuplas (cada una conteniendo el nombre del elemento y su número correspondiente de átomos).

    Finalmente, iteramos sobre cada elemento en la lista de tuplas, asignando su nombre a una clave del diccionario y su número al valor correspondiente. Si el número está en blanco (lo que sucedería para elementos con una cuenta de 1), establecemos el valor en 1.

    El diccionario resultante (elements) debería contener cada elemento en la fórmula como clave y su correspondiente número de átomos como valor.

Comments are closed.