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