无法使用Python将阿拉伯语解码的Unicode保存到CSV文件

时间:2016-01-20 16:29:33

标签: python csv twitter unicode

我正在使用python的twitter流媒体包。我目前正在使用以unicode编写的关键字来搜索包含该字词的推文。然后我使用python创建推文的数据库csv文件。但是,当我将它们保存在csv中时,我想将推文转换回阿拉伯符号。

我收到的错误都类似于“错误ondata位置___中的ASCII字符不在128范围内。”

这是我的代码:

class listener(StreamListener):
    def on_data(self, data):
        try:
            #print data

            tweet = (str((data.split(',"text":"')[1].split('","source')[0]))).encode('utf-8')
            now = datetime.now()
            tweetsymbols =  tweet.encode('utf-8')
            print tweetsymbols

            saveThis = str(now) + ':::' + tweetsymbols.decode('utf-8')
            saveFile = open('rawtwitterdata.csv','a')
            saveFile.write(saveThis)
            saveFile.write('\n')
            saveFile.close()
            return True

2 个答案:

答案 0 :(得分:1)

Excel需要将Unicode BOM字符写入UTF-8文件的开头才能正确查看。没有它,Excel假设" ANSI"编码,这是与操作系统区域相关的。

这会写一个带有阿拉伯语的3行3列CSV文件:

#!python2
#coding:utf8
import io
with io.open('arabic.csv','w',encoding='utf-8-sig') as f:
    s = u'إعلان يونيو وبالرغم تم. المتحدة'
    s = u','.join([s,s,s]) + u'\n'
    f.write(s)
    f.write(s)
    f.write(s)

输出:

enter image description here

对于您的具体示例,只需确保将BOM字符u'\xfeff'写为文件的第一个字符,以UTF-8编码。在上面的例子中,' utf-8-sig'编解码器确保编写BOM。

另请参阅this answer,其中显示了如何包装csv模块以支持Unicode,或获取第三方unicodecsv模块。

答案 1 :(得分:0)

这是在文本中写阿拉伯语的片段

# coding=utf-8
import codecs
from datetime import datetime

class listener(object):


    def on_data(self, tweetsymbols):
        # python2
        # tweetsymbols is str
        # tweet = (str((data.split(',"text":"')[1].split('","source')[0]))).encode('utf-8')
        now = datetime.now()
        # work with unicode
        saveThis = unicode(now) + ':::' + tweetsymbols.decode('utf-8')
        try:
            saveFile = codecs.open('rawtwitterdata.csv', 'a', encoding="utf8")
            saveFile.write(saveThis)
            saveFile.write('\n')
        finally:
            saveFile.close()
        return self


listener().on_data("إعلان يونيو وبالرغم تم. المتحدة")

您必须了解编码https://pythonhosted.org/kitchen/unicode-frustrations.html