質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1547閲覧

リアルタイムで収集したツイートからリツイートを除去したい

farinelli

総合スコア61

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/08/16 08:04

Pythonでリアルタイムで取ってきたツイートから、url, リプライ, ハッシュタグ, リツイート(できれば絵文字も)を除外したいです。
現在、リツイート(と一部の絵文字)がどうしても除去できていません。
この場合どうすればいいのでしょうか?

該当のソースコード

python

1import os 2import tweepy 3import redis 4import math 5from collections import Counter 6import re 7 8#r = redis.Redis(host='localhost', port=6379, db=0) 9 10TWITTER_CLIENT_ID = os.environ['TWITTER_CLIENT_ID'] 11TWITTER_CLIENT_SECRET = os.environ['TWITTER_CLIENT_SECRET'] 12 13TWITTER_OAUTH_TOKEN = os.environ['TWITTER_OAUTH_TOKEN'] 14TWITTER_OAUTH_TOKEN_SECRET = os.environ['TWITTER_OAUTH_TOKEN_SECRET'] 15 16auth = tweepy.OAuthHandler(TWITTER_CLIENT_ID,TWITTER_CLIENT_SECRET) 17auth.set_access_token(TWITTER_OAUTH_TOKEN,TWITTER_OAUTH_TOKEN_SECRET) 18 19class StreamListener(tweepy.StreamListener): 20 def __init__(self): 21 super().__init__() 22 self.count = 0 # 取得したtweet数 23 24 def on_status(self, status): 25 text = str(status.text) 26 text2 = re.sub(r"http\S+", "", text) 27 text3 = re.sub(r"@(\w+) ", "", text2) 28 text4 = re.sub(r"#(\w+)", "", text3) 29 #リツイートは消えていない 30 text5 = re.sub(r"RT(\w+)", "", text4) 31 #絵文字も消したい 32 emoji_pattern = re.compile("[" 33 u"\U0001F600-\U0001F64F" 34 u"\U0001F300-\U0001F5FF" 35 u"\U0001F680-\U0001F6FF" 36 u"\U0001F1E0-\U0001F1FF" 37 "]+", flags=re.UNICODE) 38 text6 = emoji_pattern.sub("", text5) 39 40 #日本語ツイートをファイルに書き込んでいる + ツイートの数を表示 41 if status.lang == "ja": 42 self.count += 1 43 print(self.count, text6) 44 with open("test34.txt", "a", encoding="utf-8") as f: 45 f.write(text6) 46 47 def on_error(self, status_code): 48 return False 49 50stream = tweepy.Stream(auth=auth, listener=StreamListener()) 51stream.sample()

テキストデータ (一部)

txt

1RT @dadada_darkred2: アシュニキから出る液体は聖水だから漏らしても全年齢対象 ド健全草RT @aretijp: / 2あなたの肌は油田肌??砂漠肌?? 34 5キャンペーンに応募してオアシス肌になれる商品をGET 6 7①@aretijp をフォロー 8②ハッシュタグを選んでツイート 9③応募完了&オアシス肌の秘訣が届く 10 118/19(月)23:59まで⏰ 12RT @katsuyatakasu: 対話を求める僕をブロックするなんて・・・立花先生タブスタ 13 14RT @avntisdouga: あと5日。 15 16第2弾はローソンお買い物券(500円) 17を20名様に 18 19応募は 20①をフォロー 21②本ツイートをRT 22⏰8/22(木) 23 24AFHのイメージはゲイがいます。出会い厨、暴言厨、メンヘラ、地雷、キッズ、ニートと個性が… 欲し〜ええがん、見せてやRT @kkeiji_fan: 【Radio】TBSラジオ「コシノジュンコ MASACA」 25 26 RT @Sanrio_Apps: SANRIO NAKAYOKU EDIT 27コラボキャラクター発表!✨ 28 29第一弾はイケブクロ・ディビジョン「Buster Bros!!!」の三人♪ 30山田一郎×ハローキティ 山田二郎×ポチャッコ 山田三郎×ポムポムプリン…@closing_theater 31 32そのかわいらしい姿がこちら???????????? さあ光星! 33がんばえ~〜!!!RT @AfiliaSaga: 34 35台湾満喫中 RT @MorningMusumeMg: NHK-FM「今日は一日ハロプロ三昧」

補足情報(FW/ツールのバージョンなど)

iOS 10.12.6, Python 3.7.3, Atom

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

リツイート全体を削除するには以下のような正規表現でよいかと思います。
顔文字については、とりあえず????ですと正常に除去されましたが、提示コードで絵文字がすべて網羅されていないのかもしれません。pythonで絵文字を駆逐するで紹介されているモジュールを利用するのがよいかと思います。

Python

1import re 2 3def exclude(s): 4 s = re.sub(r"http\S+", "", s) 5 s = re.sub(r"@(\w+) ", "", s) 6 s = re.sub(r"#(\w+)", "", s) 7 s = re.sub(r"(^RT.*)", "", s, flags=re.MULTILINE | re.DOTALL) # RTで始まる任意の(複数行)文字列 8 9 emoji_pattern = re.compile("[" 10 u"\U0001F600-\U0001F64F" 11 u"\U0001F300-\U0001F5FF" 12 u"\U0001F680-\U0001F6FF" 13 u"\U0001F1E0-\U0001F1FF" 14 "]+", flags=re.UNICODE) 15 s = emoji_pattern.sub("", s) 16 17 return s 18 19 20s = """RT @hoge: あいうえお 21かきくけこ""" 22print('['+exclude(s)+']') # [] 23 24s = """船????""" 25print('['+exclude(s)+']') # [船]

投稿2019/08/16 09:02

can110

総合スコア38234

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

farinelli

2019/08/19 01:08

了解しました。有難うございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問