On 06/29/2013 07:29 AM, fob...@gmail.com wrote:
Hi,

Using Python 2.7 on Linux, presumably?  It'd be better to be explicit.


I am trying to use a program called MeCab, which does syntax analysis on 
Japanese text. The problem I am having is that it returns a byte string and if 
I try to print it, it prints question marks for almost all characters. However, 
if I try to use .decide, it throws an error. Here is my code:

What do the MeCab docs say the tagger.parse byte string represents? Maybe it's not text at all. But surely it's not utf-8.


#!/usr/bin/python
# -*- coding:utf-8 -*-

import MeCab
tagger = MeCab.Tagger("-Owakati")
text = 'MeCabで遊んでみよう!'

result = tagger.parse(text)
print result

result = result.decode('utf-8')
print result

And here is the output:

MeCab �� �� ��んで�� �� ��う!

Traceback (most recent call last):
   File "test.py", line 11, in <module>
     result = result.decode('utf-8')
   File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
     return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 6-7: invalid 
continuation byte


------------------
(program exited with code: 1)
Press return to continue

Also my terminal is able to display Japanese characters properly. For example 
print '日本語' works perfectly fine.

Are your terminal and your text editor using utf-8, or something else? Can you put your print statement in the source file above, and it'll also work fine?

Are you actually running it from the terminal, or some GUI? I notice you get "(program exited with code: 1)" and "Press return to continue". Neither of those is standard terminal fare on any OS I know of.



--
DaveA
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to