J'ai un code comme celui qui utilise une expression régulière pour supprimer un "nom d'utilisateur" d'un texte

# remove mention, link, hashtag
text = ' '.join(re.sub("([@#][A-Za-z0-9]+)|(\w+:\/\/\S+)"," ", text).split())

Cependant cela ne fonctionne pas dans tous les cas, par exemple, le nom d'utilisateur ci-dessous ne semble pas être supprimé:

@username_user

En fait, cela ne fonctionne que sur la première partie du nom d'utilisateur, avant le trait de soulignement, me laissant avec ce qui suit:

user

Comment puis-je adapter mon code afin de travailler sur l'intégralité du nom d'utilisateur fourni dans l'exemple?

1
E Yo 25 févr. 2021 à 16:36

1 réponse

Meilleure réponse

Si vous avez simplement besoin d'adapter votre expression régulière pour qu'elle corresponde à plus de modèles de noms d'utilisateur, comme @username_user , vous pouvez ajouter le trait de soulignement dans votre premier groupe, comme ci-dessous:

text = ' '.join(re.sub("([@#][A-Za-z0-9_]+)|(\w+:\/\/\S+)"," ", text).split())

Ce qui précède fonctionnera avec " @username_user ", et vous pouvez l'adapter à autant de nouveaux caractères que nécessaire, en les ajoutant après le trait de soulignement dans le jeu de caractères (les crochets; après le nombre 9 ) de l'expression régulière.

0
BiOS 25 févr. 2021 à 15:32