【问题标题】:UnicodeEncodeError in PythonPython中的UnicodeEncodeError
【发布时间】:2020-03-04 21:23:38
【问题描述】:

我收到一个错误,我不知道我应该做什么?! 错误信息:
文件“pandas_libs\writers.pyx”,第 55 行,在 pandas._libs.writers.write_csv_rows UnicodeEncodeError: 'ascii' codec can't encode character u'\u2026' in position 147: ordinal not in range(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

【问题讨论】:

  • 请以文本形式分享整个错误消息。
  • 代码中的哪一行有错误? data.to_csv("Tweets.csv") 应该默认为 utf-8,而不是 ascii。
  • 在pandas库本身的文件中没有确定的行,并在处理将数据存储在CSV“Excel”文件中时显示此错误,此错误为(编码和UTF-8 ) 而这样的工作人员出现太多,不知道如何处理
  • 错误信息显示:文件“pandas_libs\writers.pyx”,第 55 行,在 pandas._libs.writers.write_csv_rows UnicodeEncodeError: 'ascii' codec can't encode character u'\u2026' in位置 147:序数不在范围内(128)
  • Unicode 字符 2026 是一个水平省略号。我没有经常处理 Pandas - 我不确定它是否可以处理其 CSV 输出中的完整 Unicode 字符集。该消息不会暗示:无法将该 Unicode 字符转换为 ASCII。也许您可以在输入数据中找到并删除 Unicode 省略号,或者通常将输入数据“清理”为仅 ASCII?

标签: python pandas csv decode encode


【解决方案1】:

我找到了一个同样有效的解决方案: 将 (encoding='utf-8') 添加到该行: data.to_csv("Tweets.csv", encoding='utf-8')

【讨论】:

    【解决方案2】:

    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
    

    另请参阅:help() codecs 模块。

    【讨论】:

      猜你喜欢
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      相关资源
      最近更新 更多