2016-05-07 5 views
0

** Проблема решена в this post ** Я использую ПК с Windows 10 и пытаюсь очистить и проанализировать форум на сайте. Мое решение использует Scrapy и Textblob, и я запускаю Python 2.7. Скребок генерирует желаемый результат (который я сохраняю как .csv или .json). Однако, когда я использую этот файл в сценарии Python, интегрирующей TextBlob, я получаю следующее сообщение об ошибке:UnicodeDecodeError с использованием TextBlob и Python 2.7

Traceback (most recent call last): 
    File "C:\Users\Marcus\Documents\Blog\Python\Scripts\Brooks\textblob_sentiment.py", line 14, in <module> 
print blob 
    File "C:\Python27\lib\site-packages\textblob\compat.py", line 30, in <lambda> 
cls.__str__ = lambda x: x.__unicode__().encode('utf-8') 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf0 in position 425: ordinal not in range(128) 

скрипт, который генерирует эту ошибку является:

# from __future__ import division, unicode_literals (This was recommended  for Python 2.x, but didn't help in my case.) 

import csv 

from textblob import TextBlob 


infile = 'items.csv' 

with open(infile, 'r') as scrape_file: 
    comments = csv.reader(scrape_file) 
    for comment in comments: 
     sentence = comment[0] 
     blob = TextBlob(sentence) 
     print blob 

Структура кода похож на другой thread, который я нашел на SO, и я также попытался интегрировать методы кодирования/декодирования в этот скрипт на основе других потоков, которые я нашел на SO. Но, возможно, я не делал этого правильно (я не разработчик). Я также попытался открыть json-файл, думая, возможно, проблема заключалась в кодировании .csv. Я могу распечатать желаемый контент (например, «напечатать предложение» или «распечатать комментарии», только когда я пытаюсь использовать TextBlob, который получил ошибку.
Возможно, у вас есть решение, которое блокирует эту ошибку? И поскольку Я хотел бы использовать эти библиотеки снова, как я могу избежать подобных головных болей

большое спасибо за вашу помощь в этом ...

+0

Это похоже на ошибку в библиотеке. –

+0

попробуйте добавить '# - * - кодирование: utf-8 - * -' в первую строку этого файла. – eLRuLL

+0

Спасибо, к сожалению, это не помогло. Еще одно примечание: сообщение об ошибке генерируется после предоставления некоторого желаемого результата, поэтому кажется, что на выходе есть что-то определенное, вызывающее ошибку для TextBlob. – Marcus

ответ

0

Попробуйте это:

unicodedata.normalize('NFKD', sentence).encode('ascii','ignore').lower() 

убедитесь, что импортирован unicode

import unicodedata 
+0

Спасибо Omair, когда я добавляю обе строки, я получаю «No module unicode». если из командной строки я тогда делаю «pip install unicode», я получаю «Не найден подходящий дистрибутив для unicode». Я нашел библиотеку, которую, по-видимому, понимает Python, называется «unicodedata». Когда я импортировал это в свой скрипт и включил вашу предложенную строку unicodedata.normalize (между строками, начинающимися с «предложение» и «blob», ошибка: «TypeError: должен быть unicode, а не str». – Marcus

+0

извините, обновил оператор импорта –

+0

Спасибо, я все еще получал ошибки (такая же ошибка unicodedecode, Textblob, требующая unicode, и получение списка и т. д.). Я отредактировал свой код, и хотя моя основная проблема с Textblob не решена, моя ошибка отличается и, вероятно, заслуживает другая тема, поэтому я открою другой вопрос. – Marcus

Смежные вопросы