Solución al Ejercicio: Enfatizar palabras
📋 Copiar código
import re
def enfatizar_palabras(texto, palabras_a_enfatizar):
"""
Enfatiza palabras específicas en un texto utilizando formato Markdown (negrita).
Args:
texto: La cadena de texto de entrada.
palabras_a_enfatizar: Una lista de palabras a enfatizar.
Returns:
Una nueva cadena con las palabras enfatizadas en Markdown.
"""
texto_modificado = texto
for palabra in palabras_a_enfatizar:
patron = r"(?i)\b" + re.escape(palabra) + r"\b"
reemplazo = r"**" + palabra + r"**"
texto_modificado = re.sub(patron, reemplazo, texto_modificado)
return texto_modificado
# Ejemplos de uso
texto1 = "El perro ladra mucho. El PERRO es ruidoso."
palabras1 = ["perro"]
resultado1 = enfatizar_palabras(texto1, palabras1)
print(f"'{texto1}' con '{palabras1}' enfatizadas: '{resultado1}'")
texto2 = "La casa es grande y la CASA azul."
palabras2 = ["casa", "azul"]
resultado2 = enfatizar_palabras(texto2, palabras2)
print(f"'{texto2}' con '{palabras2}' enfatizadas: '{resultado2}'")
texto3 = "Un ejemplo de ejemplo muy claro."
palabras3 = ["ejemplo"]
resultado3 = enfatizar_palabras(texto3, palabras3)
print(f"'{texto3}' con '{palabras3}' enfatizadas: '{resultado3}'")
texto4 = "No hay palabras especiales aquí."
palabras4 = ["especiales"]
resultado4 = enfatizar_palabras(texto4, palabras4)
print(f"'{texto4}' con '{palabras4}' enfatizadas: '{resultado4}'")
texto5 = ""
palabras5 = ["algo"]
resultado5 = enfatizar_palabras(texto5, palabras5)
print(f"'{texto5}' con '{palabras5}' enfatizadas: '{resultado5}'")
texto6 = "El sol es amarillo."
palabras6 = ["el", "sol"]
resultado6 = enfatizar_palabras(texto6, palabras6)
print(f"'{texto6}' con '{palabras6}' enfatizadas: '{resultado6}'")
Explicación del Código:
-
import re
:
- Importa el módulo
re
para
trabajar con expresiones regulares.
-
def enfatizar_palabras(texto,
palabras_a_enfatizar):
:
- Define una función llamada
enfatizar_palabras
que toma dos argumentos:
texto
: La cadena de
texto en la que se van a enfatizar las palabras.
palabras_a_enfatizar
:
Una lista de palabras que deben ser enfatizadas.
-
texto_modificado = texto
:
- Inicializa una variable
texto_modificado
con el valor del texto
original.
Esto se hará para ir modificando la cadena en cada iteración.
-
for palabra in
palabras_a_enfatizar:
:
- Itera a través de cada
palabra
en la lista palabras_a_enfatizar
.
-
patron = r"(?i)\b" +
re.escape(palabra) + r"\b"
:
- Crea un patrón de búsqueda de expresión
regular para la
palabra
actual:
(?i)
: Indica que la
búsqueda no debe distinguir entre mayúsculas y minúsculas.
\b
: Representa un
límite de palabra, asegurando que solo se encuentre la palabra
completa y no parte de otra palabra (por ejemplo, "perro" pero no
"perrito").
re.escape(palabra)
:
Escapa cualquier carácter especial que pueda haber en la
palabra
para que se interprete literalmente en la expresión
regular.
-
reemplazo = r"**" + palabra +
r"**"
:
- Define la cadena de reemplazo. Es la
palabra
original envuelta en doble asterisco (**
)
para darle formato de negrita en Markdown.
-
texto_modificado =
re.sub(patron, reemplazo, texto_modificado)
:
- Utiliza
re.sub()
para buscar
todas las ocurrencias del patron
en el
texto_modificado
(ignorando la capitalización) y reemplazarlas
con la cadena de reemplazo
. El resultado se asigna de nuevo
a texto_modificado
, actualizando la cadena con las palabras
enfatizadas.
-
return texto_modificado
:
- Después de iterar a través de todas las
palabras en
palabras_a_enfatizar
, la función devuelve la
cadena texto_modificado
con las palabras especificadas
enfatizadas en formato Markdown.
Ejemplos de Uso:
Los ejemplos muestran cómo la función enfatiza
las palabras proporcionadas en la lista dentro de las cadenas de texto, sin
importar su capitalización en el texto original. Las palabras enfatizadas
aparecen envueltas en **
.