首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:必须是unicode,而不是NLTK中的字符串

TypeError:必须是unicode,而不是NLTK中的字符串
EN

Stack Overflow用户
提问于 2016-07-15 17:20:15
回答 1查看 24.2K关注 0票数 9

我使用的是python2.7、nltk 3.2.1和python-crfsuite 0.8.4。我正在关注这个页面: nltk.tag.crf模块的http://www.nltk.org/api/nltk.tag.html?highlight=stanford#nltk.tag.stanford.NERTagger

首先,我只运行以下代码

代码语言:javascript
复制
from nltk.tag import CRFTagger
ct = CRFTagger()
train_data = [[('dfd','dfd')]]
ct.train(train_data,"abc")

我也试过了

代码语言:javascript
复制
f = open("abc","wb")
ct.train(train_data,f)

但是我得到了以下错误,

代码语言:javascript
复制
  File "C:\Python27\lib\site-packages\nltk\tag\crf.py", line 129, in <genexpr>
    if all (unicodedata.category(x) in punc_cat for x in token):
TypeError: must be unicode, not str
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-15 18:14:33

在Python2中,正则引号'...'"..."创建字节字符串。要获取Unicode字符串,请在字符串之前使用u前缀,如u'dfd'

要从文件中读取,您需要指定一个编码。有关选项,请参阅Backporting Python 3 open(encoding="utf-8") to Python 2;最直接的做法是将open()替换为io.open()

要转换现有的字符串,请使用unicode()方法;尽管通常需要使用decode()并提供一种编码。

对于(更多)更多细节,推荐阅读内德·巴切尔德的“实用主义统一码”幻灯片,如果不是完全必读的话;http://nedbatchelder.com/text/unipain.html

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38392407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档