Парсинг твита для извлечения хэш-тегов в массив

У меня есть heck времени, беря информацию в твите включая хэш-теги, и вытягивая каждый хэш-тег в массив с помощью Python. Я смущен для ровного помещения то, что я пробовал к настоящему времени.

Например, "Я люблю #stackoverflow, потому что #people очень #helpful!"

Это должно вытянуть эти 3 хэш-тега в массив.

12
задан martineau 20 November 2019 в 11:15
поделиться

4 ответа

Простое регулярное выражение должно выполнять свою работу:

>>> import re
>>> s = "I love #stackoverflow because #people are very #helpful!"
>>> re.findall(r"#(\w+)", s)
['stackoverflow', 'people', 'helpful']

Обратите внимание, что, как предлагается в других ответах, это может также найти нехэштеги, такие как расположение хеша в URL:

>>> re.findall(r"#(\w+)", "http://example.org/#comments")
['comments']

Другим простым решением было бы следующее (удаляет дубликаты в качестве бонуса):

>>> def extract_hash_tags(s):
...    return set(part[1:] for part in s.split() if part.startswith('#'))
...
>>> extract_hash_tags("#test http://example.org/#comments #test")
set(['test'])
60
ответ дан 2 December 2019 в 02:50
поделиться
>>> s="I love #stackoverflow because #people are very #helpful!"
>>> [i  for i in s.split() if i.startswith("#") ]
['#stackoverflow', '#people', '#helpful!']
18
ответ дан 2 December 2019 в 02:50
поделиться

AndiDogs ответ будет испорчен ссылками и другими вещами, вы можете сначала отфильтровать их. После этого используйте этот код:

UTF_CHARS = ur'a-z0-9_\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff'
TAG_EXP = ur'(^|[^0-9A-Z&/]+)(#|\uff03)([0-9A-Z_]*[A-Z_]+[%s]*)' % UTF_CHARS
TAG_REGEX = re.compile(TAG_EXP, re.UNICODE | re.IGNORECASE)

Это может показаться излишеством, но он был преобразован отсюда http://github.com/mzsanford/twitter-text-java. Он будет обрабатывать около 99% всех хэштегов так же, как их обрабатывает twitter.

Для более конвертированного twitter regex посмотрите здесь: http://github.com/BonsaiDen/Atarashii/blob/master/atarashii/usr/share/pyshared/atarashii/formatter.py

EDIT:
Посмотрите: http://github.com/BonsaiDen/AtarashiiFormat

6
ответ дан 2 December 2019 в 02:50
поделиться
hashtags = [word for word in tweet.split() if word[0] == "#"]
1
ответ дан 2 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: