UnicodeEncodeError:' ascii'编解码器不能对字符u' \ xe4'进行编码。位置0:序数不在范围内(128)

时间:2015-05-07 20:08:52

标签: python

我是Python的新手,必须构建一个应用程序来从Twitter获取历史数据。我可以在我的控制台中看到推文以及我需要的所有信息! 但我现在的问题是我需要将此信息写入.csv文件,但在运行代码时遇到以下错误: "UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 0: ordinal not in range(128)"。我知道问题在于我收集的推文是用瑞典语编写的,所以它经常使用字母"ÅÄÖ"。 任何人都可以帮助我这个或有任何指示,我应该从哪里开始寻找解决方案?

#!/usr/bin/python
# -*- coding: utf-8 -*-


from TwitterSearch import *
import csv

import codecs





try:
    tuo = TwitterUserOrder('Vismaspcs') # create a TwitterUserOrder


    ts = TwitterSearch(
        consumer_key = '',
        consumer_secret = '',
        access_token = '',
        access_token_secret = ''
    )

    # start asking Twitter about the timeline
    for tweet in ts.search_tweets_iterable(tuo):
        print( '@%s tweeted: %s' % ( tweet['user']['screen_name'], tweet['text']) )
        print (tweet['created_at'],tweet['favorite_count'],tweet ['retweet_count'])




    with open('visma.csv','w') as fout:
        writer=csv.writer(fout)    
        writer.writerows([tweet['user']['screen_name'],tweet['text'],tweet['created_at'],tweet['favorite_count'],tweet['retweet_count']])



except TwitterSearchException as e: # catch all those ugly errors
    print(e)

2 个答案:

答案 0 :(得分:2)

csv模块无法处理python2中的unicode:

  

注意此版本的csv模块不支持Unicode输入。此外,目前有一些关于ASCII NUL字符的问题。因此,所有输入应为UTF-8或可打印的ASCII以确保安全;请参阅示例部分中的示例。

您可以使用tweet['user']['screen_name'].encode("utf-8") ...

答案 1 :(得分:0)

感谢的, 我将它与file.write(word['value'].encode("utf-8"))一起使用,它也有效:)

但如果不是为了写东西,你可以试试file.encode('utf8')