У меня есть heck времени, беря информацию в твите включая хэш-теги, и вытягивая каждый хэш-тег в массив с помощью Python. Я смущен для ровного помещения то, что я пробовал к настоящему времени.
Например, "Я люблю #stackoverflow, потому что #people очень #helpful!"
Это должно вытянуть эти 3 хэш-тега в массив.
Простое регулярное выражение должно выполнять свою работу:
>>> 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'])
>>> s="I love #stackoverflow because #people are very #helpful!"
>>> [i for i in s.split() if i.startswith("#") ]
['#stackoverflow', '#people', '#helpful!']
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
hashtags = [word for word in tweet.split() if word[0] == "#"]