3 usuarios conectados

Extraer nombres de usuario. Ejercicio en Python

Comparte esto

 

Escribe una función en Python llamada extraer_nombres_usuario que tome una cadena de texto como entrada y devuelva una lista de todos los nombres de usuario de menciones (que comiencen con @) encontrados en el texto.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  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:

  1. Importa el módulo re: Se utiliza para trabajar con expresiones regulares.

  2. 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).