Ywka
@Ywka

Как обработать кириллические хештеги?

Добрый день всем.
Есть кусочек кода для поиска в тексте хештегов:

pattern= re.compile(r'\#\w+')

hashtags = re.findall(pattern, text)

Но вот справляется только с латиницей.
Как извлечь все хештеги, включая кириллицу?
Спасибо.
  • Вопрос задан
  • 382 просмотра
Решения вопроса 2
sim3x
@sim3x
python3
In [2]: print(re.findall(re.compile(r'\#\w+', re.IGNORECASE), 
                                   "#1aaa sdfs #ввв2 dfsdf sdf s"))
['#1aaa', '#ввв2']


python2
In [2]: print(re.findall(re.compile(ur'\#[0-9a-zа-я_-]+', re.IGNORECASE), 
                                   u"#1aaa sdfs #ввв2 dfsdf sdf s"))
[u'#1aaa', u'#\u0432\u0432\u04322']


python2 правильно (спасибо за чтение документации @aklim007)
In [2]: print(re.findall(re.compile(r'\#\w+', re.IGNORECASE|re.U), 
                                   u"#1aaa sdfs #ввв2 dfsdf sdf s"))
[u'#1aaa', u'#\u0432\u0432\u04322']
Ответ написан
Комментировать
https://docs.python.org/2/library/re.html
\w
When the LOCALE and UNICODE flags are not specified, matches any alphanumeric character and the underscore; this is equivalent to the set [a-zA-Z0-9_]. With LOCALE, it will match the set [0-9_] plus whatever characters are defined as alphanumeric for the current locale. If UNICODE is set, this will match the characters [0-9_] plus whatever is classified as alphanumeric in the Unicode character properties database.

достаточно включить юникодовй режим и под \w начнут попадать юникодовые символы
pattern= re.compile(r'\#\w+', re.U)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
\#[а-яa-z]+
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы