2013-05-12 2 views
0

Я собрал некоторые твиты через twitter api. Затем я подсчитал слова, используя split(' ') в python. Однако некоторые слова выглядят так:Как отформатировать твиты с помощью python через twitter api?

correct! 
correct. 
,correct 
blah" 
... 

Так как я могу отформатировать твиты без пунктуации? Или, может быть, я должен попробовать другой способ: split твитов? Благодарю.

+1

Любое простое решение, используя 'строку. пунктуация', несомненно, будет беспорядочна с смайликами и другими специальными символьными последовательностями. Если вас это волнует, вам следует подумать об использовании сборки токенизатора для твитов. – Jared

ответ

3

Вы можете сделать раскол на несколько символов с помощью re.split ...

from string import punctuation 
import re 

puncrx = re.compile(r'[{}\s]'.format(re.escape(punctuation))) 
print filter(None, puncrx.split(your_tweet)) 

Или просто найти слова, которые содержат определенные смежные символы:

print re.findall(re.findall('[\w#@]+', s), your_tweet) 

например:

print re.findall(r'[\[email protected]#]+', 'talking about #python with @someone is so much fun! Is there a  140 char limit? So not cool!') 
# ['talking', 'about', '#python', 'with', '@someone', 'is', 'so', 'much', 'fun', 'Is', 'there', 'a', '140', 'char', 'limit', 'So', 'not', 'cool'] 

Вначале у меня был смайлик, но, конечно же, в конечном итоге они получают фильтрацию o ut с этим методом, так что о чем-то следует опасаться.

1

Попробуйте удалить знаки препинания из строки перед выполнением разделения.

import string 
s = "Some nice sentence. This has punctuation!" 
out = s.translate(string.maketrans("",""), string.punctuation) 

Затем сделать split на out.

1

Я бы посоветовал, чтобы очистить текст от специальных символов, прежде чем разделив его с помощью этого кода:

tweet_object["text"] = re.sub(u'[[email protected]#$.,#:\u2026]', '', tweet_object["text"]) 

Вам потребуется импортировать повторно перед использованием функции суб

import re 
Смежные вопросы