UnicodeEncodeError в Python - PullRequest
0 голосов
/ 05 марта 2020

Я получаю ошибку, и я не знаю, что именно я должен делать ?! Сообщение об ошибке:
Файл «pandas_libs \ writers.pyx», строка 55, в pandas ._ libs.writers.write_csv_rows UnicodeEncodeError: код «ascii» c не может кодировать символ u '\ u2026' в позиции 147: порядковый номер вне диапазона (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

The error

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Я нашел решение, которое также работает: добавление (encoding = 'utf-8') к строке: data.to_csv ("Tweets.csv", encoding = 'utf-8')

0 голосов
/ 05 марта 2020

PANDAS запускается при обработке данных Unicode, предположительно при создании выходного файла CSV.

Один из подходов, если вам действительно не нужно обрабатывать данные Unicode, - это просто выполнять преобразования на вашем данные для получения всего ASCII.

Другой подход заключается в передаче ваших данных перед созданием выходного файла CSV для получения кодировки UTF-8 любых символов, не относящихся к ASCII. (Возможно, вам придется сделать это на уровне ячеек данных вашей электронной таблицы.)

Я предполагаю 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

См. Также: help() on codecs модуль.

...