2014-11-21 85 views
1

虽然这是一个常见问题,但我无法找到适用于我的案例的解决方案。我有数据,这是逗号分隔如下。NLTK从CSV中删除停用词

['my scientific','data']['is comma-separated','frequency'] 

我试图使用

from nltk.corpus import stopwords 
stopword = stopwords.words('english') 
mynewtext = [w for w in transposed if w not in stopword] 
out_file.writerow(w) 

去除停止词,但它给了我一个错误说“UnicodeWarning:统一等于比较未能两个参数为Unicode转换 - 将它们解释为不平等” 。我不确定我犯了什么错误。我想我的csv文件输出到像

scientific,data 
comma-separated,frequency 

而且,我希望它为这两种情况下,上下工作。 casefield在我的Python版本中不起作用2.7

回答

2

尝试

# -*- coding: utf-8 -*-, 

在你的源代码中的头。

它告诉Python,您保存的源文件是utf-8Python 2的默认值是ASCII(对于Python 3它是utf-8)。这只会影响解释器如何读取文件中的字符。

3

我认为您在上面的代码中将str objectunicode object进行了比较。

我建议你去看看在链接Python unicode equal comparison failed

>>> s1 = u'Hello' 
>>> s2 = unicode("Hello") 
>>> type(s1), type(s2) 
(<type 'unicode'>, <type 'unicode'>) 
>>> s1==s2 
True 
>>> 
>>> s3='Hello'.decode('utf-8') 
>>> type(s3) 
<type 'unicode'> 
>>> s1==s3 
>>>True 
+0

感谢您的回复。我不确定我做的方式是否正确,我的数据是在变量“转置”的,所以根据您的回答,我使用unicode(转置)并保持其余的相同。现在我的输出csv文件被分成单独的字母。 – abn 2014-11-21 19:38:10