更新:问题已解决。(请参阅下面的评论部分。)最终,需要以下两行将我的 .csv 转换为 unicode 并利用 TextBlob:row = [cell.decode('utf-8') for cell in row] 和 text = ' ' .join(行)。
原始问题:我正在尝试使用名为 Textblob 的 Python 库来分析 .csv 文件中的文本。在我的代码中调用 Textblob 时收到的错误是:
Traceback(最近一次调用最后):文件“C:\Users\Marcus\Documents\Blog\Python\Scripts\Brooks\textblob_sentiment.py”,第 30 行,在 blob = TextBlob(row) 文件“C:\Python27\lib \site-packages\textblob\blob.py", line 344, init 'must be a string, not {0}'.format(type(text)))TypeError: The
text
argument pass to__init__(text)
must be a string, not
我的代码是:
#from __future__ import division, unicode_literals #(This was recommended for Python 2.x, but didn't help in my case.)
#-*- coding: utf-8 -*-
import csv
from textblob import TextBlob
with open(u'items.csv', 'rb') as scrape_file:
reader = csv.reader(scrape_file, delimiter=',', quotechar='"')
for row in reader:
row = [unicode(cell, 'utf-8') for cell in row]
print row
blob = TextBlob(row)
print type(blob)
我一直在处理 UTF/unicode 问题。我最初对这个线程提出了一个不同的主题。(由于我的代码和错误已更改,我将发布到一个新线程。)打印语句表明变量“row”的类型=str,我认为这表明阅读器对象已按照 Textblob 的要求进行了转换. 源 .csv 文件保存为 UTF-8。任何人都可以就我如何在这方面畅通无阻以及我的代码中的缺陷提供反馈吗?
非常感谢帮忙。