从几个不同的例子中,我已经能够创建一个简单的Python脚本来解析来自Twitter Streaming API的JSON输出,并打印出每个screen_name
和text
鸣叫。我想修改我的代码,以便将每条推文分类为以下之一:
(1)转发 - >在推文文本栏中的某处有一个“RT @anyusername”
(2)提及 - >在推文列中有一个“@anyusername”但没有“RT @anyusername”
(3)推文 - >推文栏中没有“RT @anyusername”或任何“@anyusername”
我可以使用以下公式在Excel中执行此操作,但我可以在Python中找到它。
=IF(IFERROR(FIND("RT @",B2)>0,"False"),"Retweet",IF(IFERROR(FIND("@",B2)>0,"False"),"Mention","Tweet"))
现有代码
import json
import sys
from csv import writer
with open(sys.argv[1]) as in_file, \
open(sys.argv[2], 'w') as out_file:
print >> out_file, 'tweet_author, tweet_text, tweet_type'
csv = writer(out_file)
for line in in_file:
try:
tweet = json.loads(line)
except:
pass
tweet_text = tweet['text']
row = (
tweet['user']['screen_name'],
tweet_text
)
values = [(value.encode('utf8') if hasattr(value, 'encode') else value) for value in row]
csv.writerow(values)
答案 0 :(得分:2)
我这里没有任何python解释器,但它应该类似于:
import re
def url_match(tweet):
match = re.match(r'RT\s@....+', tweet)
if match:
return "RT"
else:
match = re.match(r'@....+', tweet)
if match:
return "mention"
else
return "tweet"
注意:这适用于此分类,但如果您要检索用户名,即@USERNAME,则必须再调整一次。