python输出中文异常

发布于 2021-12-04 10:20:17 字数 919 浏览 781 评论 14

问题:输出中文异常,查阅各种资料都没解决

环境:python2.7.10 pycharm win8-64bit

代码:

#encoding=utf-8  
import pynlpir
pynlpir.open()
s = '开源中国'   
print pynlpir.segment(s)
pynlpir.close()

输出:

[(u'u5f00', u'verb'), (u'u6e90', u'noun'), (u'u4e2du56fd', u'noun')]

具体描述:

我是用了中科院分词库的python接口,官方的pynlpir。这是一个最简单的demo,看上面的结果应该是分成了三个部分:“开”“源”“中国”(好吧,词库连开源都没有)。主要是输出的问题,查阅各种资料(包括开源中国),得出的答案就是:要在开头加入encoding声明,然而我开始就加了这个(上面的代码第一行就是),还是没用。有时候还会出这样的错误:SyntaxError: Non-ASCII character 'xe9' in file XXXXXX

总之没有一个办法能够解决的,包括在这个主题:http://www.oschina.net/question/939494_146868

pycharm中找不到类似的设置,原题主的办法也是无效的。

据说换py3就好了,但是我担心又出问题,这个pynlpir安装非常蛋疼,如果有办法,我还是想直接解决,而且py3据说不如2稳定。

顺便有做过分词的大神,请问爬下来的数据是放数据库做分词好,还是导出文本文档比较好?谢谢!


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

如此安好 2021-12-10 05:15:36

回复
因为将list里的数据以str格式单独打印出来的时候是可以的,整个输出就会以unicode方式

兮颜 2021-12-10 05:15:36

奇怪,为什么这个可以?

妖妓 2021-12-10 05:15:34

encoding和coding我都试过,包括
#-*- coding:utf-8 -*- 与#coding=utf-8这两种格式我也换过,但是都不行。我最后一次试的时候用的encoding,就直接复制过来了,反正结果都一样。

做个少女永远怀春 2021-12-10 05:15:34

回复
奇怪的设定,不过现在决定直接换py3了。今天花了半个下午换成了py3,但是官方github的那个pynlpir居然还要改代码,而且没有注明修改方法,api文档也出现了问题,给他跪了。

月牙弯弯 2021-12-10 05:15:32

print出来的结果就是代码下面那一行,我没找到那个标注代码的#,所以就直接复制过来了。在cmd、pycharm和IDLE下输出都是这样的,decode又不能直接操作list,我总不至于一个个摘出来吧。

成熟的代价 2021-12-10 05:15:32

加入的不是encoding,而是coding

兮颜 2021-12-10 05:15:29

已经decode过了,所以是unicode,直接推前段显示,没问题。否则你只能循环迭代list然后print. 比如print " ".join(lst),这个没办法,python2就这样子。除非用python3

悲喜皆因你 2021-12-10 05:15:27

回复
好吧,实在不行换3试试,谢谢了。

狼亦尘 2021-12-10 05:15:14

这没问题,是unicode编码,你print出来就可以看到解码结果了

鹤舞 2021-12-10 04:59:21

因为要做的是一个医学方面的分词,担心人名、地名、病名、药名之类的太生僻,像结巴这样的词库据说不太好用。这个nlpir是基于HMM模型的,貌似表现会好一些,所以才会用这个。 至于py3的问题,一是怕重新装pynlpir会出问题,二是这个问题我认为在py2可以解决。

拍不死你 2021-12-10 03:23:10

回复
看pynlpir文档,pynlpir默认可以用unicode和utf-8,建议在传入pynlpir的数据都用unicode的,就是在传入以前做decode,这样可以尽量减少字符编码出错。

少女情怀诗 2021-12-10 03:06:35

 分词用jieba, py3已经很成熟了

彩扇题诗 2021-12-10 02:38:42

所以是没法搞么。。。。。。就是在py2下能不能解决这个问题,像这样直接是一个list,decode都不能用。

野心澎湃 2021-12-04 10:34:50

老问题了,p2的编码是ascii,p3是unicode

p2->p3接口改变,第三方库不兼容,所以很多留守p2的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文