PyEnchant似乎对某些字母/数字组合有奇怪的行为:
>>> 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']
并非每个字母/数字组合都会产生此问题。更多的例子是:
try/except
A92产生了一些东西,92P给出了3个关键反应。
在PyEnchant中,关键错误(它们是错误吗?)打印到屏幕上,但似乎没有一种机制来捕获它。我没有成功尝试 function myFunction(e) {
var genderSheet1 = e.values[19];
var genderSheet2 = SpreadsheetApp.openById("To Populate");
if (genderSheet1===genderSheet2) {
var userName = e.values[1];
var userEmail = "email";
var subject = "WORKER FOUND?";
var message = "Dear " + userName + "," +
"\n\n\nThis is the finder" +
MailApp.sendEmail(userEmail, subject, message, {attachments:file.next().getBlob()});
}
}
块
有没有办法测试何时显示“关键”消息,并通过不要求拼写建议消除消息?
答案 0 :(得分:1)
来自http://pythonhosted.org/pyenchant/api/enchant.html
加(字)
Add a word to the associated personal word list.
因此,我的理解是你需要一个个人单词列表(PWL)。
Pyenchant是一个基于ctypes的附魔C库包装器。我的理解是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库(附魔)抛出而不是直接冒险,所以我不知道有什么方法可以捕获它们或阻止它们被显示。但是如果你使用DictWithPWL(),它们就永远不会被抛出。