Solución al Ejercicio: Extraer nombres de usuario
📋 Copiar código
import re
def extraer_nombres_usuario(texto):
"""
Extrae los nombres de usuario de menciones (@usuario) en un texto.
Args:
texto: La cadena de texto de entrada.
Returns:
Una lista de los nombres de usuario encontrados.
"""
nombres_usuario = re.findall(r'@[\w]+', texto)
return [nombre[1:] for nombre in nombres_usuario] # Eliminar el '@' del inicio
# Ejemplos de uso
texto1 = "Hola @usuario1 y @usuario_dos, ¿cómo están?"
resultado1 = extraer_nombres_usuario(texto1)
print(f"Nombres de usuario en '{texto1}': {resultado1}")
texto2 = "Este tweet es para @otro_usuario."
resultado2 = extraer_nombres_usuario(texto2)
print(f"Nombres de usuario en '{texto2}': {resultado2}")
texto3 = "Menciono a @usuario123 y también a @usuario-con-guion (incorrecto)."
resultado3 = extraer_nombres_usuario(texto3)
print(f"Nombres de usuario en '{texto3}': {resultado3}")
texto4 = "Sin menciones aquí."
resultado4 = extraer_nombres_usuario(texto4)
print(f"Nombres de usuario en '{texto4}': {resultado4}")
texto5 = "@usuario"
resultado5 = extraer_nombres_usuario(texto5)
print(f"Nombres de usuario en '{texto5}': {resultado5}")
texto6 = "El correo es usuario@example.com (no es mención)."
resultado6 = extraer_nombres_usuario(texto6)
print(f"Nombres de usuario en '{texto6}': {resultado6}")
texto7 = ""
resultado7 = extraer_nombres_usuario(texto7)
print(f"Nombres de usuario en '': {resultado7}")
Explicación del Código:
-
Importa el módulo re
:
Se utiliza para trabajar con expresiones regulares.
-
Función
extraer_nombres_usuario(texto)
:
re.findall(r'@[\w]+', texto)
:
Utiliza re.findall()
para encontrar todas las coincidencias
del patrón en el texto. El patrón busca:
@
: Coincide
literalmente con el símbolo de arroba.
[\w]+
: Coincide con
uno o más (+
) caracteres de "palabra" (\w
).
Un carácter de palabra incluye letras (mayúsculas y minúsculas),
números y el guion bajo (_
).
[nombre[1:] for nombre in
nombres_usuario]
: Utiliza una comprensión de lista para crear una
nueva lista. Para cada nombre
encontrado (que incluye el
@
), se toma una subcadena desde el segundo carácter ([1:]
)
para eliminar el @
inicial y obtener solo el nombre de
usuario.
- Devuelve la lista de nombres de usuario
extraídos.
Ejemplos de Uso:
Los ejemplos muestran cómo la función extrae los
nombres de usuario de las menciones en diferentes textos. Solo se consideran
nombres de usuario válidos aquellos que comienzan con @
seguido de
letras, números y guiones bajos (aunque el guion bajo en medio sí se extrae).