2016-05-07 121 views
0

**問題已解決this post **我正在使用Windows 10 PC並試圖刮擦和分析網站論壇。我的解決方案使用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 

代碼的結構類似於另一我在SO上找到了線程,並且我還試圖根據我在SO上找到的其他線程將編碼/解碼方法集成到此腳本中。但也許我沒有這麼做(我不是開發者)。我也嘗試打開json文件,認爲問題可能是.csv編碼的方式。 我可以打印所需的內容(例如,「打印句子」或「打印評論」,只有當我嘗試使用TextBlob時,我收到錯誤。
可能您有解除此錯誤的解決方案嗎? 我想再次使用這些庫,我怎樣才能避免類似的麻煩

非常感謝您對這個幫助...

+0

看起來像庫中的一個bug。 –

+0

嘗試在該文件的第一行添加'# - * - coding:utf-8 - * - '。 – eLRuLL

+0

謝謝 - 不幸的是,似乎沒有幫助。另外需要注意的一點是:在提供了一些所需的輸出後,會出現錯誤消息,因此在輸出中有一些特定的內容會導致TextBlob發生錯誤。 – Marcus

回答

0

試試這個:

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

確保導入unicode

import unicodedata 
+0

謝謝Omair,當我添加這兩行時,我得到「No module named unicode」。如果從命令行我然後做「pip安裝unicode」我得到「沒有找到匹配分佈的unicode」。我發現一個Python似乎理解的叫做「unicodedata」的庫。當我在我的腳本中導入幷包含你建議的unicodedata.normalize行(以「sentence」和「blob」開頭的行之間,錯誤是「TypeError:must unicode,not str。」 – Marcus

+0

抱歉,更新導入語句 –

+0

謝謝,我仍然收到錯誤(相同unicodedecode錯誤,需要unicode和接收列表等textblob)我重構了我的代碼,雖然我的基本問題與Textblob沒有解決,我的錯誤是不同的,它可能值得不同的主題行,所以我會打開一個不同的問題。 – Marcus