2016-05-07 88 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