煽动者会弄乱外国人

时间:2012-09-19 16:42:25

标签: python spell-checking pyenchant

Pyenchant弄乱外国人物,拼写检查失败。我的女朋友是德国人所以“häßlich”这个词是一个真正的德语单词,我也使用不同的拼写检查服务检查了这个词。

脚本文件编码是ANSI为UTF-8。我试图将这个单词编码和解码成不同类型的字符编码。


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

# Python bindings for the enchant spellcheck
import enchant

# Enchant dictionary
enchantdict = enchant.Dict("de_DE")

# Define german word for "ugly"
word = "häßlich"

# Print the original word and the spellchecked version of it
print word, "=", enchantdict.check(word)

输出如下: h├ñ├ƒlich=假


另外,如果我将脚本编码更改为普通ANSI,这就是我得到的:

hõ¯lich =
** (python.exe:1096): CRITICAL **: enchant_dict_check: assertion `g_utf8_validate(word, len, NULL)' failed
Traceback (most recent call last):
  File "C:\Temp\koe.py", line 14, in <module>
    print word, "=", enchantdict.check(word)
  File "C:\Python27\lib\site-packages\enchant\__init__.py", line 577, in check
    self._raise_error()
  File "C:\Python27\lib\site-packages\enchant\__init__.py", line 551, in _raise_
error
    raise eclass(default)
enchant.errors.Error: Unspecified Error

我正在使用: pyenchant-1.6.5.win32.exe 蟒蛇,2.7.3.msi Windows 7


...如果你有一个更好的拼写检查器,请告诉我它,我会测试它:)

1 个答案:

答案 0 :(得分:2)

你正在惹恼Python中有两种类型的字符串这一事实:字节字符串和Unicode字符串你需要在字符串前面加上'u'才能成为Unicode字符串:

word = u"häßlich"

同样häßlich is the old spelling of hässlich(后者在字典中,将作为建议返回)。您可以将häßlich添加到正确拼写单词的个人列表中,如果您希望将其拼写正确拼写。

enchantdict.add(字)