我是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)
答案 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')