Python 使用df.to_csv()编码错误
我试图将Twits(屏幕名称、创建时间和文本)中的信息保存到pandas数据框中,然后将数据框保存为csv文件 我得到一个编码错误Python 使用df.to_csv()编码错误,python,csv,encoding,utf-8,dataframe,Python,Csv,Encoding,Utf 8,Dataframe,我试图将Twits(屏幕名称、创建时间和文本)中的信息保存到pandas数据框中,然后将数据框保存为csv文件 我得到一个编码错误 import tweepy from tweepy import OAuthHandler consumer_key = 'bla' consumer_secret = 'bla' access_token = 'bla' access_secret = 'bla' auth = OAuthHandler(consumer_key, consumer_secret
import tweepy
from tweepy import OAuthHandler
consumer_key = 'bla'
consumer_secret = 'bla'
access_token = 'bla'
access_secret = 'bla'
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
import pandas as pd
import numpy as np
import datetime
import sys
encoding = sys.stdout.encoding or 'utf-8'
columns = ['Screen_Name', 'Time_Stamp', 'Tweet']
todays_date = datetime.datetime.now().date()
tweetDF = pd.DataFrame(columns=columns)
for tweet in tweepy.Cursor(api.search, q="manhattan", lang="en").items(10):
lenDF = len(tweetDF)
tweetDF.loc[lenDF] = [tweet.user.screen_name, tweet.created_at, tweet.text]
tweetDF.to_csv("C:/tweetDF")
下面是错误:
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-11-c0aa5e7ee620> in <module>()
---> 34 tweetDF.to_csv("C:/tweetDF")
C:\Anaconda\lib\site-packages\pandas\core\frame.pyc in to_csv(self, path_or_buf, sep, na_rep, float_format, columns, header, index, index_label, mode, encoding, quoting, quotechar, line_terminator, chunksize, tupleize_cols, date_format, doublequote, escapechar, decimal, **kwds)
1187 escapechar=escapechar,
1188 decimal=decimal)
-> 1189 formatter.save()
1190
1191 if path_or_buf is None:
C:\Anaconda\lib\site-packages\pandas\core\format.pyc in save(self)
1465
1466 else:
-> 1467 self._save()
1468
1469 finally:
C:\Anaconda\lib\site-packages\pandas\core\format.pyc in _save(self)
1565 break
1566
-> 1567 self._save_chunk(start_i, end_i)
1568
1569 def _save_chunk(self, start_i, end_i):
C:\Anaconda\lib\site-packages\pandas\core\format.pyc in _save_chunk(self, start_i, end_i)
1592 quoting=self.quoting)
1593
-> 1594 lib.write_csv_rows(self.data, ix, self.nlevels, self.cols, self.writer)
1595
1596 # from collections import namedtuple
pandas\lib.pyx in pandas.lib.write_csv_rows (pandas\lib.c:17992)()
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2666' in position 7: ordinal not in range(128)
UnicodeEncodeError回溯(最近一次呼叫最后一次)
在()
--->34 tweetDF.至_csv(“C:/tweetDF”)
C:\Anaconda\lib\site packages\pandas\core\frame.pyc in to_csv(self、path或_buf、sep、na_rep、float_格式、列、标题、索引、索引标签、模式、编码、引号、行终止符、chunksize、tupleize cols、date_格式、双引号、转义、十进制、**kwds)
1187 escapechar=escapechar,
1188十进制=十进制)
->1189格式化程序。保存()
1190
1191如果路径_或_buf为无:
保存中的C:\Anaconda\lib\site packages\pandas\core\format.pyc(self)
1465
1466其他:
->1467自我保存()
1468
1469最后:
C:\Anaconda\lib\site packages\pandas\core\format.pyc in\u save(self)
1565中断
1566
->1567自我保存块(开始、结束)
1568
1569 def_save_chunk(self、start_i、end_i):
C:\Anaconda\lib\site packages\pandas\core\format.pyc(self、start、end)
1592报价=自报价)
1593
->1594 lib.write_csv_行(self.data、ix、self.nlevels、self.cols、self.writer)
1595
1596#从集合导入名称为双
pandas.lib.write_csv_行中的pandas\lib.pyx(pandas\lib.c:17992)()
UnicodeEncodeError:“ascii”编解码器无法对位置7中的字符u'\u2666'进行编码:序号不在范围内(128)
我尝试了各种编码增强功能,但没有成功我找到了修复它的方法,希望与大家分享:
tweetDF.to_csv("C:/tweetDF", sep='\t', encoding = 'utf-8')
你使用的是哪一版本的Python?@MattDMo-version 2.7这篇文章可能需要Python3的更新答案。你能解释一下为什么这解决了这个问题吗?我不知道为什么这比原来的版本有效。使用此函数时,编码已默认为“utf-8”,如此函数的原始文档中所述。