*****用完整代码编辑*****
我试图用Python(3.5.3版)和MacOS上的MeCab库解析一些日语代码。在
我有一个文本如下的txt文件:
石の上に三
我用utf-8设置textEdit的首选项以保存。所以我相信系统正确地将其保存为utf-8格式。在
我得到了以下错误:
Traceback (most recent call last): File "japanese.py", line 29, in <module>
words = extractMetadataFromTXT(fileName) File "japanese.py", line 14, in extractMetadataFromTXT
md = extractWordsJP(data) File "japanese.py", line 22, in extractWordsJP
components.append(parsed.surface) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
下面是我的全部代码。什么都没少。在
^{pr2}$有人知道我为什么收到这个错误消息吗?在
有趣的事实:有时它是有效的。:O
提前谢谢你
以色列
打开文件时,请指定编码:
顺便说一句,打开文件时,使用context manager,如本例所示。在
发生错误是因为您正在向UTF-8解码器输入无效的UTF-8。这可能是由于分割字节而不是字符,或者可能是由于错误地试图解码另一种编码,如JIS或EUC,就好像它是UTF-8一样。在Python中,坚持使用unicode字符串是合理的,如果有设置了locale参数,系统可能会切换到对文本文件进行解码。即使您有适当的unicode字符串分割也是一个非常重要的问题,因为有代码可以修改其他字符,例如重音符号。幸运的是,日本人没有这种东西(除非有人碰巧把po编码为ho+ring等等)。在
一个潜在的问题是:Mecab的网页(根据google翻译)“除非另有规定,否则使用euc。”如果Mecab在假设它正在读euc的情况下是分词,它将损坏UTF-8。在
解决方案:
显然,问题出在MeCab,而不是python代码本身。这个问题是,当您使用make从头开始安装它时,有时它无法正确安装,但不会引发任何错误。在
我不知道为什么,但如果你想进一步挖掘,找出到底发生了什么,那就太好了。我只知道我用brew卸载并重新安装了它,它成功了。在
类似的事情也发生在办公室的其他Mac电脑上。我在OS X中使用brew,因此我将发布用于正确安装它的命令:
另外,要在linux上安装它,请使用以下命令:
^{pr2}$希望这能帮助未来的人们尝试标记日语单词。在
相关问题 更多 >
编程相关推荐