Python 中的 UnicodeEncodeError
UnicodeEncodeError in Python
我遇到了一个错误,我不知道我应该做什么?!
错误信息:
文件 "pandas_libs\writers.pyx",第 55 行,在 pandas._libs.writers.write_csv_rows 中
UnicodeEncodeError: 'ascii' 编解码器无法对位置 147 中的字符 u'\u2026' 进行编码:序号不在范围内 (128)
import numpy as np
import pandas as pd
from nltk.classify import NaiveBayesClassifier
from nltk.corpus import subjectivity
from nltk.sentiment import SentimentAnalyzer
from nltk.sentiment.util import *
import matplotlib.pyplot as mlpt
import tweepy
import csv
import pandas as pd
import random
import numpy as np
import pandas as pd
import re
consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True)
fetch_tweets=tweepy.Cursor(api.search, q="#unitedAIRLINES",count=100, lang ="en",since="2018-9-13", tweet_mode="extended").items()
data=pd.DataFrame(data=[[tweet_info.created_at.date(),tweet_info.full_text]for tweet_info in fetch_tweets],columns=['Date','Tweets'])
data.to_csv("Tweets.csv")
cdata=pd.DataFrame(columns=['Date','Tweets'])
total=100
index=0
for index,row in data.iterrows():
stre=row["Tweets"]
my_new_string = re.sub('[^ a-zA-Z0-9]', '', stre)
cdata.sort_index()
cdata.set_value(index,'Date',row["Date"])
cdata.set_value(index,'Tweets',my_new_string)
index=index+1
#print(cdata.dtypes)
cdata
PANDAS 在处理 Unicode 数据时出错,大概是在生成 CSV 输出文件时。
如果您真的不需要处理 Unicode 数据,一种方法是简单地对数据进行转换以获得所有 ASCII。
另一种方法是在生成 CSV 输出文件之前传递您的数据,以获取任何非 ASCII 字符的 UTF-8 编码。 (您可能需要在电子表格数据的单元格级别执行此操作。)
我在这里假设 Python3...
>>> s = "one, two, three, \u2026"
>>> print(s)
one, two, three, …
>>> ascii = str(s.encode("utf-8"))[2:-1]
>>> ascii
'one, two, three, \xe2\x80\xa6'
>>> print(ascii)
one, two, three, \xe2\x80\xa6
另请参见:codecs
模块上的 help()
。
我找到了一个同样有效的解决方案:
将 (encoding='utf-8') 添加到该行:
data.to_csv("Tweets.csv", 编码='utf-8')
我遇到了一个错误,我不知道我应该做什么?!
错误信息:
文件 "pandas_libs\writers.pyx",第 55 行,在 pandas._libs.writers.write_csv_rows 中
UnicodeEncodeError: 'ascii' 编解码器无法对位置 147 中的字符 u'\u2026' 进行编码:序号不在范围内 (128)
import numpy as np
import pandas as pd
from nltk.classify import NaiveBayesClassifier
from nltk.corpus import subjectivity
from nltk.sentiment import SentimentAnalyzer
from nltk.sentiment.util import *
import matplotlib.pyplot as mlpt
import tweepy
import csv
import pandas as pd
import random
import numpy as np
import pandas as pd
import re
consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True)
fetch_tweets=tweepy.Cursor(api.search, q="#unitedAIRLINES",count=100, lang ="en",since="2018-9-13", tweet_mode="extended").items()
data=pd.DataFrame(data=[[tweet_info.created_at.date(),tweet_info.full_text]for tweet_info in fetch_tweets],columns=['Date','Tweets'])
data.to_csv("Tweets.csv")
cdata=pd.DataFrame(columns=['Date','Tweets'])
total=100
index=0
for index,row in data.iterrows():
stre=row["Tweets"]
my_new_string = re.sub('[^ a-zA-Z0-9]', '', stre)
cdata.sort_index()
cdata.set_value(index,'Date',row["Date"])
cdata.set_value(index,'Tweets',my_new_string)
index=index+1
#print(cdata.dtypes)
cdata
PANDAS 在处理 Unicode 数据时出错,大概是在生成 CSV 输出文件时。
如果您真的不需要处理 Unicode 数据,一种方法是简单地对数据进行转换以获得所有 ASCII。
另一种方法是在生成 CSV 输出文件之前传递您的数据,以获取任何非 ASCII 字符的 UTF-8 编码。 (您可能需要在电子表格数据的单元格级别执行此操作。)
我在这里假设 Python3...
>>> s = "one, two, three, \u2026"
>>> print(s)
one, two, three, …
>>> ascii = str(s.encode("utf-8"))[2:-1]
>>> ascii
'one, two, three, \xe2\x80\xa6'
>>> print(ascii)
one, two, three, \xe2\x80\xa6
另请参见:codecs
模块上的 help()
。
我找到了一个同样有效的解决方案: 将 (encoding='utf-8') 添加到该行: data.to_csv("Tweets.csv", 编码='utf-8')