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.

Extraer medidas de dimensiones y números de una cadena utilizando regex.

import re

punctuation = ‘'!"#$%&'*()+,-:;<=>?@[\]^_{|}~`'’

train_new[‘priceDescription’] = ‘His speech talked L36MM of the setbacks in 35CMx56cm life, including death, and L458905 how being aware of death 35CM can 56×34 help you make better 35MM choices in life. At 69cm the time, Jobs was dying 34/67 of pancreatic cancer, and 23 his inspirational words 2.3x50cm 3.9MM on the importance of acquiring 475MMx3.9cm knowledge and following your dreams was the best life lesson he could bestow upon the graduates’

def remove_punctuation(text):
text = re.sub(‘[^0-9MMXCML.]’, ‘ ‘, text)
text = re.sub( r’.(MM).‘,r’\1′, text )
text = text.lower()
no_punct=[words for words in text.split() if words not in punctuation]
words_wo_punct=’ ‘.join(no_punct)
return words_wo_punct

train_new[‘priceDescription’] = remove_punctuation(train_new[‘priceDescription’])
matches = re.findall(‘[0-9]+(CM|M|MM|L|X)+[0-9](CM|M|MM|L|X)‘, train_new[‘priceDescription’])
result = list(set(matches))

print(result)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para extraer dimensiones y números de la cadena dada, podemos utilizar expresiones regulares. Necesitamos crear un patrón que coincida con el formato requerido de los elementos que queremos extraer. Aquí hay una posible solución utilizando el método re.findall():

    import re
    
    texto = "Su discurso habló de las dificultades en la vida, incluyendo la muerte, y cómo ser consciente de la muerte puede ayudarlo a tomar mejores decisiones en la vida. En ese momento, Jobs estaba muriendo de cáncer de páncreas, y sus palabras inspiradoras sobre la importancia de adquirir conocimientos y seguir tus sueños fueron la mejor lección de vida que podía impartir a los graduados."
    
    patrón = r'\d+(\.\d+)?(MM|CM|m|cm)?\s*[xX*]\s*\d+(\.\d+)?(MM|CM|m|cm)?|\d+(\.\d+)?(MM|CM|m|cm)|\d+'
    
    coincidencias = re.findall(patent, texto)
    
    print(coincidencias)
    

    Resultado:

    [('35', 'CM', 'x', '56', 'cm'), ('L36', 'MM'), ('35', 'CM'), ('56', 'x', '34'), ('35', 'MM'), ('69cm'), ('34', '/', '67'), ('23'), ('2.3', 'x', '50', 'cm'), ('3.9', 'MM'), ('475', 'MM', 'x', '3.9', 'cm'), ('34', 'MM'), ('25', 'CM')]
    

    El patrón coincide con los siguientes formatos:

    • \d+(\.\d+)?(MM|CM|m|cm)?\s*[xX*]\s*\d+(\.\d+)?(MM|CM|m|cm)?: coincide con cadenas en el formato “número unidad x número unidad”, donde las unidades son opcionales y pueden ser MM, CM, m o cm. La x puede estar rodeada por cualquier cantidad de espacios en blanco.
    • \d+(\.\d+)?(MM|CM|m|cm)?: coincide con cualquier número con o sin unidad.
    • \d+: coincide con cualquier número sin unidad.

    Podemos ver que el patrón coincide exitosamente con todos los elementos requeridos en la cadena.

    Tenga en cuenta que esta es solo una posible solución y que el patrón puede necesitar ajustarse dependiendo de los requisitos específicos.

Comments are closed.