我无法在python 3.6中使用tweepy保存阿拉伯语推文

时间:2017-11-08 06:39:37

标签: python python-3.x twitter arabic tweepy

因为标题说我几乎没有试图弄清楚如何在python 3.6中使用tweepy来保存推文。我找到了一个解决方案,我可以用英语保存,但我不能用阿拉伯语。有人有什么想法吗?

我在阿拉伯语推文的CSV文件中输入的输出就像这样

1510123361.875904 :: \ u0623 \ u0664 \ u0648 \ u0608 \ u0628 \ u0644 \ u0645 \ u0627 \ u062a \ u0624 \ u0644 \ u0644 \ u0647 \ u0644 \ u0644 / um4 / u0644 \ u0644 / FMsjMi2nvF

提前谢谢。

这是我的代码

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

save = open('ExampleNumber4.csv', 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))
            tweet = data.split(',"text":"')[1].split('","source')[0]
            savefile = str(time.time()) + "::" + tweet
            save.write(savefile)
            save.write("\n\n")
            return (True)

        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=[u'سيارة'])
save.close()

1 个答案:

答案 0 :(得分:0)

这是一个有效的解决方案。请尝试通过包含一些示例JSON数据并跳过我们无法按原样运行的推特代码来制作下一次产生问题错误的工作示例。

#coding:utf8
import sys
import json
import time
import csv

data = r'{"text": "\u0633\u064a\u0627\u0631\u0629\ud83d\ude00"}' # ASCII JSON
# data = '{"text": "سيارة"}'  # non-ASCII JSON

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

with open('ExampleNumber4.csv', mode='w', encoding="utf-8-sig", newline='') as save:
    writer = csv.writer(save)
    tweet = json.loads(data)['text']
    print(tweet.translate(non_bmp_map))
    savefile = [time.time(),tweet]
    writer.writerow(savefile)

输出:

1510208283.7488384,سيارة�