繁体   English   中英

使用某些字母/数字时,PyEnchant错误

[英]Error in PyEnchant when certain letter/numbers are used

PyEnchant在某些字母/数字组合上似乎有奇怪的行为:

>>> import enchant
>>> d=enchant.Dict("en_US")
>>> d.add("def")
>>> d.add("abc")
>>> d.suggest("P92")

** (python.exe:15036): CRITICAL **: enchant_is_all_caps: assertion `word && *word' failed
['ᾈ\t_us', 'Def', 'Abc']

并非每个字母/数字组合都会产生此问题。 更多示例是:

>>> d.suggest("A92")
['Abc']
>>> d.suggest("92P")

** (python.exe:15036): CRITICAL **: enchant_is_all_caps: assertion `word && *word' failed

** (python.exe:15036): CRITICAL **: enchant_is_title_case: assertion `word && *word' failed

** (python.exe:15036): CRITICAL **: enchant_is_all_caps: assertion `word && *word' failed
['', 'DEF', 'ABC']

A92产生了一些结果,92P给出了3个关键响应。

在PyEnchant中,严重错误(它们是错误吗?)会显示在屏幕上,但是似乎没有一种机制可以捕获此错误。 我尝试try/except块失败

有没有一种方法可以测试何时显示“关键”消息并通过不要求拼写建议来消除该消息?

来自http://pythonhosted.org/pyenchant/api/enchant.html

加(字)

 Add a word to the associated personal word list. 

因此,我的理解是您需要一个个人单词列表(PWL)。

Pyenchant是用于附魔C库的基于ctypes的包装器。 我的理解是ctypes缓存对象以供重用。 因此,从一个全新的终端开始,或者如果在Windows上,则需要清除ctypes缓存的所有内容(如果有疑问,也许重新启动Windows?):

然后使用这样的个人单词列表:

import enchant
d = enchant.DictWithPWL("en_US","mywords.txt")
d.add("def")
d.add("abc")
print d.suggest("P92")
print d.suggest("92P")
print d.suggest("Helo")

输出:

['Abc', 'Def']
['ABC', 'DEF']
['He lo', 'He-lo', 'Hole', 'Help', 'Helot', 'Hello', 'Halo', 'Hero', 'Hell', 'Held', 'Helm', 'Heel', 'Loathe', 'Def']

如果在mywords.txt中发现空白行(尚未正确清除缓存的ctypes),则删除内容以关闭终端或在Widows上需要执行的任何操作,然后重试。

如果要在内存中使用PWL删除或截断(一定要删除以前创建的空白行),请使用默认PWL文件(在Linux上为〜/ .config / enchant / en_US.dic)并使用:

d=enchant.DictWithPWL("en_US", None)

我强烈怀疑您看到的错误消息是直接由基础C库(附魔)而不是pyenchant抛出的,因此我不知道一种捕获它们或阻止其显示的方法。 但是,如果您使用DictWithPWL(),它们永远不会被抛出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM