¿Cómo explicar los caracteres de acento para expresiones regulares en Python?

Actualmente utilizo re.findall para buscar y aislar palabras después del carácter ‘#’ para tags hash en una cadena:

hashtags = re.findall(r'#([A-Za-z0-9_]+)', str1) 

Busca en str1 y encuentra todos los hashtags. Esto funciona, sin embargo, no tiene en cuenta los caracteres acentuados como estos, por ejemplo: áéíóúñü¿ .

Si una de estas letras está en str1, guardará el hashtag hasta la letra anterior. Entonces, por ejemplo, #yogenfrüz sería #yogenfr .

Necesito poder explicar todas las letras acentuadas que van desde alemán, holandés, francés y español para poder guardar hashtags como #yogenfrüz

¿Cómo puedo hacer esto?

Intente lo siguiente:

 hashtags = re.findall(r'#(\w+)', str1, re.UNICODE) 

Demostración Regex101

EDITAR Compruebe el comentario útil a continuación de Martijn Pieters.

También es posible que desee utilizar

 import unicodedata output = unicodedata.normalize('NFD', my_unicode).encode('ascii', 'ignore') 

¿Cómo convierto todos esos caracteres de escape en sus respectivos caracteres, como si hubiera un unicode a, cómo lo convierto en un estándar a? Supongamos que ha cargado su Unicode en una variable llamada my_unicode … normalizar à en un es este simple …

importar unicodedata output = unicodedata.normalize (‘NFD’, my_unicode) .encode (‘ascii’, ‘ignore’) Ejemplo explícito …

 myfoo = u'àà' myfoo u'\xe0\xe0' unicodedata.normalize('NFD', myfoo).encode('ascii', 'ignore') 'aa' 

marque esta respuesta me ayudó mucho: ¿Cómo convertir caracteres acentuados Unicode a ascii puro sin acentos?