Introduction
Dans ce projet, vous allez apprendre à extraire des noms d'utilisateur à partir de texte à l'aide de Python. C'est une tâche courante dans les applications de médias sociaux et de messagerie instantanée, où le caractère @ est souvent utilisé pour mentionner quelqu'un.
👀 Aperçu
## Exemple 1
>>> from parse_username import after_at
>>> text = "@LabEx @labex I won in the @ competition"
>>> print(after_at(text))
['LabEx', 'labex']
## Exemple 2
>>> text = "@LabEx@labex I won in the @ competition"
>>> print(after_at(text))
['LabEx', 'labex']
## Exemple 3
>>> text = "@labex @LabEx I won in the @LabEx competition"
>>> print(after_at(text))
['LabEx', 'labex']
## Exemple 4
>>> text = "@!LabEx @labex I won in the competition"
>>> print(after_at(text))
['labex']
## Exemple 5
>>> text = "I won in the competition@"
>>> print(after_at(text))
[]
## Exemple 6
>>> text = "LabEx@!"
>>> print(after_at(text))
[]
## Exemple 7
>>> text = "@!@LabEx @labex I won in the @LabEx competition @experiment"
>>> print(after_at(text))
['LabEx', 'experiment', 'labex']
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment implémenter la fonction
after_atpour extraire des noms d'utilisateur à partir d'un texte donné - Comment gérer les cas limites et optimiser les performances de la fonction
- Comment tester la fonction avec diverses scénarios d'entrée
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Comprendre comment utiliser Python pour analyser et extraire des informations pertinentes à partir de texte
- Développer une fonction robuste et efficace pour extraire des noms d'utilisateur à partir de texte
- Appliquer vos compétences de résolution de problèmes pour améliorer la fonctionnalité de la fonction
- Tester votre code soigneusement pour vous assurer qu'il fonctionne comme prévu
Implémentez la fonction after_at
Dans cette étape, vous allez implémenter la fonction after_at pour extraire des noms d'utilisateur à partir d'un texte donné.
Ouvrez le fichier
parse_username.pydans votre éditeur de code.Localisez la définition de la fonction
after_at.La fonction devrait prendre une chaîne de caractères
texten entrée, qui peut être vide.À l'intérieur de la fonction, initialisez une liste vide appelée
usernamespour stocker les noms d'utilisateur extraits.Trouvez l'index de la première occurrence du caractère
@dans letextà l'aide de la méthodefind(), et stockez-le dans la variableat_index.Tant que
at_indexn'est pas-1(ce qui signifie que le caractère@a été trouvé) :- Initialisez une chaîne de caractères vide appelée
username. - Itérez sur les caractères de la chaîne
texten commençant à partir de l'index après le caractère@. - Pour chaque caractère, vérifiez s'il est alphanumérique ou un tiret bas en utilisant les méthodes
isalnum()etisalpha(). - Si le caractère est valide, ajoutez-le à la chaîne
username. - Si le caractère n'est pas valide, sortez de la boucle.
- Si
usernamen'est pas vide, ajoutez-le à la listeusernames. - Trouvez la suivante occurrence du caractère
@dans la chaînetexten commençant à partir de l'index après la précédente occurrence de@.
- Initialisez une chaîne de caractères vide appelée
Après la boucle, supprimez tous les noms d'utilisateur dupliqués de la liste
usernamesà l'aide de la fonctionset().Triez la liste
usernamespar ordre décroissant en fonction du nombre d'occurrences de chaque nom d'utilisateur à l'aide de la fonctionsorted()avec une fonction clé personnalisée.Retournez la liste
usernamestriée.
Votre fonction after_at complétée devrait ressembler à ceci :
def after_at(text):
usernames = []
at_index = text.find("@") ## Trouvez l'index de la première occurrence de "@"
while at_index!= -1: ## Continuez la boucle jusqu'à ce qu'aucun autre symbole "@" ne soit trouvé
username = ""
for char in text[
at_index + 1 :
]: ## Itérez sur les caractères après le symbole "@"
if (
char.isalnum() or char == "_" or char.isalpha()
): ## Vérifiez si le caractère est alphanumérique ou un tiret bas
username += char ## Ajoutez le caractère au nom d'utilisateur
else:
break ## Si le caractère n'est pas alphanumérique ou un tiret bas, arrêtez d'ajouter des caractères au nom d'utilisateur
if username:
usernames.append(username) ## Ajoutez le nom d'utilisateur extrait à la liste
at_index = text.find(
"@", at_index + 1
) ## Trouvez le prochain symbole "@" en commençant à partir de l'index suivant
## Supprimez les doublons et triez par nombre d'occurrences par ordre décroissant
usernames = sorted(
list(set(usernames)), key=lambda x: usernames.count(x), reverse=True
)
return usernames
Tester la fonction after_at
Dans cette étape, vous allez tester la fonction after_at avec les exemples fournis.
- Ouvrez le fichier
parse_username.pydans votre éditeur de code. - Localisez le bloc
if __name__ == "__main__":en bas du fichier. - À l'intérieur du bloc, ajoutez le code suivant pour tester la fonction
after_at:
## Exemple 1
print(after_at("@LabEx @labex I won in the @ competition"))
## Exemple 2
print(after_at("@LabEx@labex I won in the @ competition"))
## Exemple 3
print(after_at("@labex @LabEx I won in the @LabEx competition"))
## Exemple 4
print(after_at("@!LabEx @labex I won in the competition"))
## Exemple 5
print(after_at("I won in the competition@"))
## Exemple 6
print(after_at("LabEx@!"))
## Exemple 7
print(after_at("@!@LabEx @labex I won in the @LabEx competition @experiment"))
- Enregistrez le fichier
parse_username.py. - Exécutez le fichier
parse_username.pydans votre terminal ou invite de commandes en utilisant la commande suivante :
python parse_username.py
- Vérifiez que la sortie correspond aux résultats attendus fournis dans le défi.
['LabEx', 'labex']
['LabEx', 'labex']
['LabEx', 'labex']
['labex']
[]
[]
['LabEx', 'experiment', 'labex']
Résumé
Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



