Python 从Twitter检索阿拉伯语数据

Python 从Twitter检索阿拉伯语数据,python,twitter,unicode,utf-8,tweepy,Python,Twitter,Unicode,Utf 8,Tweepy,我想使用Python3.5和Tweepy从Twitter检索阿拉伯语数据 我发现一个可以很好地使用英语或法语的程序,但是对于阿拉伯语,tweet是解码的。 对于exp: \u04f\u04e\u043e\u0430\u0430\u044f 以下是节目: from tweepy import Stream from tweepy import OAuthHandler from tweepy.streaming import StreamListener ConsumerKey = 'Your_

我想使用
Python3.5
Tweepy
从Twitter检索阿拉伯语数据

我发现一个可以很好地使用英语或法语的程序,但是对于阿拉伯语,tweet是解码的。 对于exp:

\u04f\u04e\u043e\u0430\u0430\u044f

以下是节目:

from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener

ConsumerKey = 'Your_Consumer_Key'
ConsumerSecret = 'Your_Consumer_Secret'
AccessToken = 'Your_Access_Token'
AccessTokenSecret = 'Your_Access_Token_Secret'

tweets = open('Tweets.txt',mode='w',encoding="utf8",newline=None)

class listener(StreamListener) :

      def on_data (self , data) :
            tweets.write(data)
            print (data)
            return True

      def on_error (self , status) :
            print (status)

auth = OAuthHandler (ConsumerKey , ConsumerSecret)
auth.set_access_token(AccessToken , AccessTokenSecret)
twitterStream = Stream(auth , listener())
twitterStream.filter(track=['أحوال','الطقس','2016'])
tweets.close()
我使用了一些函数,但出现了错误:

  • data.decode()我得到一个错误AttributeError:'str'对象没有属性'decode'
  • u(数据)我收到一个错误名称错误:名称“u”未定义
  • track=[unicode('2016','utf-8')、unicode('1575; utf-8'、'utf-8')、unicode('1571; utf-8'、'utf-8')]我得到一个错误名称错误:名称“unicode”未定义

该代码运行良好

from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import json
import sys

ConsumerKey = 'Your_Consumer_Key'
ConsumerSecret = 'Your_Consumer_Secret'
AccessToken = 'Your_Access_Token'
AccessTokenSecret = 'Your_Access_Token_Secret'

non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)

#tweets = open('Tweets.txt',mode='w',encoding="utf8",newline=None)


class listener(StreamListener) :
    def on_data (self , data):
        try:
            tweet = json.loads(data)['text']
            print(tweet.translate(non_bmp_map))

        except KeyError:
            pass

    def on_error(self , status):
        print(status)


auth = OAuthHandler (ConsumerKey , ConsumerSecret)
auth.set_access_token(AccessToken , AccessTokenSecret)
twitterStream = Stream(auth , listener())
twitterStream.filter(track=['الله'])
#tweets.close()

对于您发布的程序,它对于Python3看起来是正确的(不过,我会删除
newline=None
)。你有错误吗?例如,Windows控制台上的
print
通常会限制所支持的Unicode字符,因此提及您的Python版本、操作系统、运行时环境(控制台或某些IDE)并对任何错误进行完整的回溯也是很重要的。@MarkTolonen我找到了一个解决方案,它应该可以工作:)