Tengo un código como ese que usa una expresión regular para eliminar un "nombre de usuario" de un texto

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

Sin embargo, no funciona en todos los casos, por ejemplo, el nombre de usuario siguiente no parece haber sido eliminado:

@username_user

De hecho, solo funciona en la primera parte del nombre de usuario, antes del guión bajo, dejándome con lo siguiente:

user

¿Cómo puedo adaptar mi código para que funcione en todo el nombre de usuario proporcionado en el ejemplo?

1
E Yo 25 feb. 2021 a las 16:36

1 respuesta

La mejor respuesta

Si lo que necesita es simplemente adaptar su regex para que coincida con más patrones de nombres de usuario, como @username_user , puede agregar el guión bajo en su primer grupo, como se muestra a continuación:

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

Lo anterior funcionará con " @username_user ", y puede adaptarlo a tantos caracteres nuevos como necesite, agregándolos después del guión bajo en el conjunto de caracteres (los corchetes; después del número 9 ) de la expresión regular.

0
BiOS 25 feb. 2021 a las 15:32