2016-08-05 8 views
0

私はTweepyストリーマーを使用して、特定のタグ(この場合は#python)のツイートを収集しています。スクリプトのストリーマー部分はうまく動作しますが、私が苦労しているところでは、出力から情報を抽出しています。Python - Tweepy Regex

Tweepyサンプル: { "のcreated_at": "金8月5日夜5時27分00秒+0000 2016"、 "ID":761614496666361857、 "id_str": "761614496666361857"、 "テキスト" 「別のPythonを使用しバーチャルエンコーダーを使用しているバージョン#py thon #virtualenv #virtualenvwrapper https://t.co/ecedKrCX0L "、" source ":

サンプルからは太字を抽出して印刷したいこれが正しく動作するようにしてください。しかし、これは私が後だ細目を抽出し、フルtweepyの出力を印刷し続けていません

class MyListener(StreamListener): 
     def on_data(self, data): 
       try: 
         pattern = re.compile(r'"text":"(.*?)","') 
         for line in data: 
             x = pattern.search(data) 
             f = open('tmp', 'a') 
             f.write(data) 
             f.close 
             return True 
         else: 
           pass 

       except BaseException as e: 
         print("Error on_data: %s" % str(e)) 
         return True 

:これまでのところ私は作ってみました。

ご協力いただければ幸いです!あなたがテキストを抽出したい場合

おかげ

+1

。 [JSONモジュール](https://docs.python.org/3/library/json.html)を試しましたか? –

+0

まだ、それはおそらくリストの次のものです。運がなければCSVモジュールを試しましたが、JSONの場合は100%ではありません。さらに調査します! – user1634278

+1

あなたが与えた例に基づいて100%JSONです。 –

答えて

1

easisest方法は、JSONモジュールです。

import json 
class MyListener(StreamListener): 

    def on_data(self, data): 
      try: 
        json.loads(data) 
        f = open('tmp', 'a') 
        f.write(data["text"]) 
        f.close() 
      except BaseException as e: 
        print("Error on_data: %s" % str(e)) 
        return True 

しかし、あなたは正規表現を使用する場合は、このコードになります:

class MyListener(StreamListener): 
    def on_data(self, data): 
      try: 
        pattern = re.compile(r'"text":"([^",]*)","') 
        for line in data: 
            x = pattern.search(data) 
            f = open('tmp', 'a') 
            f.write(data) 
            f.close 
            return True 
        else: 
          pass 

      except BaseException as e: 
        print("Error on_data: %s" % str(e)) 
        return True 
JSONのようなにおいが