可以在enchant中传递多个字典吗?

2024-05-29 00:22:04 发布

您现在位置:Python中文网/ 问答频道 /正文

有什么办法我可以使用多个字典在附魔。 我就是这么做的

import enchant
d = enchant.Dict("en_US")
d.check("materialise")
>> False

但是如果我使用enchant.Dict("en_UK"),我会得到True。组合多个字典的最佳方法是什么,这样它将返回True,而不管materialisematerialize作为输入参数?你知道吗


Tags: 方法importfalsetrue字典checkenchantdict
2条回答

@Mass17这其实是不对的。表达式"en_US" and "en_UK"是对结果为"en_UK"的两个字符串的逻辑“与”运算。在上面的表达式中AND运算符是如何工作的:(1)首先,任何非空字符串都被认为是True,(2)如果左字符串为True,则检查并返回右字符串。阅读Python的short-circuit评估,了解它为什么会这样工作。你知道吗

所以:

>>> "en_US" and "en_UK"
'en_UK'

请注意,如果您切换字符串的顺序:

>>> "en_UK" and "en_US"
'en_US'

单词“materialise”和“materialize”都出现在"en_UK"字典中,因此您得到了结果。你还没有把这两本字典“组合”起来。你知道吗

对于拼写词典,如果两个词典共享相同的.aff文件,并且我假设en_USen_GB传递该条件,则有一个解决方法。你知道吗

作者是Sergey Kurakin,Bash脚本是(dic_combine.sh),如下所示:

#!/bin/bash

# Combines two or more hunspell dictionaries.
# (C) 2010 Sergey Kurakin <kurakin_at_altlinux_dot_org>

# Attention! All source dictionaries MUST share the same affix file.

# Usage: dic_combine source1.dic source2.dic [source3.dic...] > combined.dic

TEMPFILE=`mktemp`

cat $@ | sort  unique | sed -r 's|^[0123456789]*$||;/^$/d' > $TEMPFILE

cat $TEMPFILE | wc -l
cat $TEMPFILE
rm -f $TEMPFILE
rm -f $TEMPFILE 

因此,您必须将这些字典文件放在一个目录中并运行:

$ dic_combine en_US.dic en_GB.dic > en.dic

相关问题 更多 >

    热门问题