Python使用deepcut分词泰语文本时遇UnicodeDecodeError求助
解决deepcut泰文分词后的UnicodeDecodeError问题
你这是把Python 3里的字符串和字节对象搞混啦!咱们来一步步理清问题:
问题根源
在Python 3环境下,deepcut.tokenize()返回的结果已经是Unicode字符串组成的列表,根本不是字节对象。你尝试对这些字符串调用.decode('utf-8'),等于先把字符串默认编码成字节(这一步就生成了错误的字节序列),再去解码,自然触发了UnicodeDecodeError。
而你看到的['\xe0', '\xb8', '\x95', ...],其实是错误遍历导致的——你把result里的每个字符串拆成了单个字符的字节表示,正常的result应该是['ตัดคำ', 'ได้', 'ดี', 'มาก']这样的字符串列表。
正确的处理代码
直接使用分词结果就行,完全不需要额外解码:
import deepcut thai = 'ตัดคำได้ดีมาก' result = deepcut.tokenize(thai) # 直接打印整个分词结果 print(result) # 输出: ['ตัดคำ', 'ได้', 'ดี', 'มาก'] # 遍历打印每个分词 for word in result: print(word)
验证类型(可选)
要是你想确认返回元素的类型,可以跑这段代码:
print(type(result[0])) # 输出: <class 'str'>,说明是字符串类型,完全不需要解码
之前你写的for i in result其实是在遍历字符串的每个字符(因为result里的元素本身就是字符串),所以才会输出单个字节的转义序列,这也是个小误区哦!
内容的提问来源于stack exchange,提问作者Cryssie
相关产品推荐
相关产品推荐

