Как учесть символы акцента для регулярного выражения в Python?

В настоящее время я использую re.findall для поиска и выделения слов после символа '#' для хэш-тегов в строке:

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

Он ищет str1 и находит все хэштеги. Это работает, однако в нем не учитываются такие акцентированные символы, как эти, например: áéíóúñü¿ .

Если одна из этих букв находится в str1, она сохранит хэштаг вверх до буквы перед ним. Например, #yogenfrüz будет #yogenfr .

Мне нужно учесть все акцентированные буквы, которые варьируются от немецкого, голландского, французского и испанского, так что я могу сохранить хэштеги, например #yogenfrüz

Как я могу это сделать?

Попробуйте следующее:

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

Демо-версия Regex101

EDIT Проверьте полезный комментарий ниже от Martijn Pieters.

Вы также можете использовать

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

как преобразовать все эти escape-символы в их соответствующие символы, например, если есть unicode à, как я могу преобразовать это в стандартное? Предположим, вы загрузили свой юникод в переменную my_unicode … нормализация à в a это просто …

import unicodedata output = unicodedata.normalize ('NFD', my_unicode) .encode ('ascii', 'ignore') Явный пример …

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

проверьте этот ответ, это очень помогло мне: как конвертировать символы Unicode с акцентом в чистый ascii без акцентов?