Introducción
En este proyecto, aprenderás a extraer nombres de usuario de texto utilizando Python. Esta es una tarea común en aplicaciones de redes sociales y mensajería instantánea, donde el carácter @ se utiliza a menudo para mencionar a alguien.
👀 Vista previa
## Ejemplo 1
>>> from parse_username import after_at
>>> text = "@LabEx @labex I won in the @ competition"
>>> print(after_at(text))
['LabEx', 'labex']
## Ejemplo 2
>>> text = "@LabEx@labex I won in the @ competition"
>>> print(after_at(text))
['LabEx', 'labex']
## Ejemplo 3
>>> text = "@labex @LabEx I won in the @LabEx competition"
>>> print(after_at(text))
['LabEx', 'labex']
## Ejemplo 4
>>> text = "@!LabEx @labex I won in the competition"
>>> print(after_at(text))
['labex']
## Ejemplo 5
>>> text = "I won in the competition@"
>>> print(after_at(text))
[]
## Ejemplo 6
>>> text = "LabEx@!"
>>> print(after_at(text))
[]
## Ejemplo 7
>>> text = "@!@LabEx @labex I won in the @LabEx competition @experiment"
>>> print(after_at(text))
['LabEx', 'experiment', 'labex']
🎯 Tareas
En este proyecto, aprenderás:
- Cómo implementar la función
after_atpara extraer nombres de usuario de un texto dado - Cómo manejar casos extremos y optimizar el rendimiento de la función
- Cómo probar la función con varios escenarios de entrada
🏆 Logros
Después de completar este proyecto, podrás:
- Comprender cómo utilizar Python para analizar y extraer información relevante de texto
- Desarrollar una función robusta y eficiente para extraer nombres de usuario de texto
- Aplicar tus habilidades para resolver problemas para mejorar la funcionalidad de la función
- Probar tu código exhaustivamente para asegurarte de que funcione como se espera
Implementar la función after_at
En este paso, implementarás la función after_at para extraer nombres de usuario de un texto dado.
Abre el archivo
parse_username.pyen tu editor de código.Localiza la definición de la función
after_at.La función debe tomar una cadena
textcomo entrada, que puede estar vacía.Dentro de la función, inicializa una lista vacía llamada
usernamespara almacenar los nombres de usuario extraídos.Encuentra el índice de la primera aparición del carácter
@en eltextutilizando el métodofind(), y guárdalo en la variableat_index.Mientras
at_indexno sea-1(lo que significa que se encontró el carácter@):- Inicializa una cadena vacía llamada
username. - Itera sobre los caracteres en la cadena
textcomenzando desde el índice después del carácter@. - Para cada carácter, comprueba si es alfanumérico o un subrayado utilizando los métodos
isalnum()yisalpha(). - Si el carácter es válido, añádelo a la cadena
username. - Si el carácter no es válido, sale del bucle.
- Si
usernameno está vacía, añádelo a la listausernames. - Encuentra la siguiente aparición del carácter
@en la cadenatextcomenzando desde el índice después del carácter@anterior.
- Inicializa una cadena vacía llamada
Después del bucle, elimina cualquier nombre de usuario duplicado de la lista
usernamesutilizando la funciónset().Ordena la lista
usernamesen orden descendente basado en la cantidad de cada nombre de usuario utilizando la funciónsorted()con una función de clave personalizada.Devuelve la lista
usernamesordenada.
Tu función after_at completada debería verse así:
def after_at(text):
usernames = []
at_index = text.find("@") ## Encuentra el índice de la primera aparición de "@"
while at_index!= -1: ## Continúa el bucle hasta que no se encuentren más símbolos "@"
username = ""
for char in text[
at_index + 1 :
]: ## Itera sobre los caracteres después del símbolo "@"
if (
char.isalnum() or char == "_" or char.isalpha()
): ## Comprueba si el carácter es alfanumérico o un subrayado
username += char ## Añade el carácter al nombre de usuario
else:
break ## Si el carácter no es alfanumérico o un subrayado, deja de añadir caracteres al nombre de usuario
if username:
usernames.append(username) ## Añade el nombre de usuario extraído a la lista
at_index = text.find(
"@", at_index + 1
) ## Encuentra el siguiente símbolo "@" comenzando desde el siguiente índice
## Elimina duplicados y ordena por cantidad de apariciones en orden descendente
usernames = sorted(
list(set(usernames)), key=lambda x: usernames.count(x), reverse=True
)
return usernames
Probar la función after_at
En este paso, probarás la función after_at con los ejemplos proporcionados.
- Abre el archivo
parse_username.pyen tu editor de código. - Localiza el bloque
if __name__ == "__main__":al final del archivo. - Dentro del bloque, agrega el siguiente código para probar la función
after_at:
## Ejemplo 1
print(after_at("@LabEx @labex I won in the @ competition"))
## Ejemplo 2
print(after_at("@LabEx@labex I won in the @ competition"))
## Ejemplo 3
print(after_at("@labex @LabEx I won in the @LabEx competition"))
## Ejemplo 4
print(after_at("@!LabEx @labex I won in the competition"))
## Ejemplo 5
print(after_at("I won in the competition@"))
## Ejemplo 6
print(after_at("LabEx@!"))
## Ejemplo 7
print(after_at("@!@LabEx @labex I won in the @LabEx competition @experiment"))
- Guarda el archivo
parse_username.py. - Ejecuta el archivo
parse_username.pyen tu terminal o línea de comandos utilizando el siguiente comando:
python parse_username.py
- Verifica que la salida coincida con los resultados esperados proporcionados en el desafío.
['LabEx', 'labex']
['LabEx', 'labex']
['LabEx', 'labex']
['labex']
[]
[]
['LabEx', 'experiment', 'labex']
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



