Curso-lenguaje-python/30-days-of-python/18_Expresiones_regulares/01_regex.py

125 lines
3.6 KiB
Python
Raw Normal View History

"""
01_regex.py
"""
import re
# Ejercicios: Nivel 1
# 1. ¿Cuál es la palabra más frecuente en el siguiente párrafo?
paragraph = 'I love teaching. If you do not love teaching what else can you love. I love Python if you do not love something which can give you all the capabilities to develop an application what else can you love.'
# Convertimos el párrafo a minúsculas
paragraph = paragraph.lower()
# Separamos el párrafo en palabras
words = paragraph.split()
# Creamos un diccionario para contar la frecuencia de cada palabra
word_freq = {}
for word in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
# Encontramos la palabra más frecuente
most_freq_word = max(word_freq, key=word_freq.get)
print("La palabra más frecuente es:", most_freq_word)
# 2. La posición de algunas partículas
# en el eje x horizontal son - 12, -4, -3 y - 1
# en la dirección negativa,
# 0 en el origen,
# 4 y 8 en la dirección positiva.
# Extrae estos números de todo el texto
# y encuentra la distancia entre
# las dos partículas más lejanas.
text = "La posición de algunas partículas en el eje x horizontal son -12, -4, -3 y -1 en la dirección negativa, 0 en el origen, 4 y 8 en la dirección positiva."
# Extraemos los números del texto
numbers = re.findall(r'-?\d+', text)
# Convertimos los números a enteros
numbers = [int(num) for num in numbers]
# Encontramos la distancia entre las dos partículas más lejanas
distance = max(numbers) - min(numbers)
print("La distancia entre las dos partículas más lejanas es:", distance)
# Ejercicios: Nivel 2
# 1. Escribe un patrón que identifique
# si una cadena es una variable válida en Python.
# Definimos una función que verifica si una cadena es una variable válida en Python
def is_valid_variable(variable):
pattern = r'^[a-zA-Z_]\w*$'
if bool(re.match(pattern, variable)):
return f"La variable {variable} es válida"
else:
return f"La variable {variable} no es válida"
# Ejemplos de variables válidas e inválidas
valid_variables = ['my_var', 'myVar', '_my_var', 'myVar123', 'my_var_123']
invalid_variables = ['123myvar', 'my-var', 'my var', 'my$var']
# Verificamos si las variables son válidas o no
for variable in valid_variables:
print(variable, is_valid_variable(variable))
for variable in invalid_variables:
print(variable, is_valid_variable(variable))
# Ejercicios: Nivel 3
# 1. Limpia el siguiente texto. Después de limpiarlo, cuenta las tres palabras más frecuentes en la cadena.
sentence = '''%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;. There $is nothing; &as& mo@re rewarding as educa@ting &and& @emp%o@wering peo@ple. ;I found tea@ching m%o@re interesting tha@n any other %jo@bs. %Do@es thi%s mo@tivate yo@u to be a tea@cher!?'''
# Limpiamos el texto
clean_sentence = re.sub(r'[^a-zA-Z\s]', '', sentence)
# Convertimos el texto a minúsculas
clean_sentence = clean_sentence.lower()
# Separamos el texto en palabras
words = clean_sentence.split()
# Creamos un diccionario para contar la frecuencia de cada palabra
word_freq = {}
for word in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
# Encontramos las tres palabras más frecuentes
most_freq_words = sorted(word_freq, key=word_freq.get, reverse=True)[:3]
print("Las tres palabras más frecuentes son:", most_freq_words)
# Ejercicios: Nivel 4
# 1. Extrae el DNI de la siguiente cadena.
dni = """Asunto: Datos para la nómina.
Respondiendo a su mail, le paso el dato personal que le faltaba. Mi DNI es 12345678A.
Saludos.
"""
# Extraemos el DNI
dni = re.search(r'\d{8}[A-Z]', dni).group()
print("DNI:", dni)