Publicidad

viernes, 5 de junio de 2020

Separar parte numérica de una secuencia establecida

Separar la parte numérica y cadena en un valor de secuencia



     El titulo suena un poco extraño lo se, pero la idea principal es tratar de separar la parte numerica dentro de una secuencia o una cadena de caracteres, esto lo tuve que realizar para una modificación dentro de Odoo para obtener el folio y la secuencia, para lograrlo solo utilize una expresión regular que espero les pueda servir:




            #### Division Caracteres y Enteros ####

            import re

            folio_invoice = 'FAC04445'
            expresion_re = re.compile("([a-zA-Z]+)([0-9]+)")
            m_re = expresion_re.match(folio_invoice)
            group_1 = m_re.group(1)
            group_2 = m_re.group(2)



Alternativa:


temp_string = "Hi my age is 32 years and 250 days12"
print(temp_string)

numbers = [int(temp)for temp in temp_string.split() if temp.isdigit()]

print(numbers)

Resultado:

Hi my age is 32 years and 250 days12
[32, 250]

Mi función Final:

 
def get_split_integer_part( cadena):
    cadena = cadena.replace('-',' ').replace('/',' ').replace('_',' ').replace('*',' ').replace('+',' ')
    numbers = [int(temp)for temp in cadena.split() if temp.isdigit()]
    if not numbers:
        expresion_re = re.compile("([a-zA-Z]+)([0-9]+)")
        m_re = expresion_re.match(cadena)
        try:
            group_1 = m_re.group(1)
            group_2 = m_re.group(2)
            numbers = [group_2]
        except:
            expresion_re = re.compile("([0-9]+)([a-zA-Z]+)")
            m_re = expresion_re.match(cadena)
            try:
                group_1 = m_re.group(1)
                group_2 = m_re.group(2)
                numbers = [group_1]
            except:
                numbers = []
    if not numbers:
        return [0]
    return numbers

0 comentarios:

Publicar un comentario