有什么办法可以在附魔中使用多个字典。这就是我所做的,
import enchant
d = enchant.Dict("en_US")
d.check("materialise")
>> False
但如果我使用enchant.Dict("en_UK")
,我会得到True
。组合多个字典的最佳方法是什么,以便它True
无论返回materialise
还是materialize
作为输入参数返回?
有什么办法可以在附魔中使用多个字典。这就是我所做的,
import enchant
d = enchant.Dict("en_US")
d.check("materialise")
>> False
但如果我使用enchant.Dict("en_UK")
,我会得到True
。组合多个字典的最佳方法是什么,以便它True
无论返回materialise
还是materialize
作为输入参数返回?
我可能来晚了,但这个问题也引起了我的兴趣。
因此,在 Python 的 enchant 中使用多种英语方言的解决方案如下:
import enchant
'''
Use "en" simply to cover all available dialects and word usages of the English language
'''
d = enchant.Dict("en")
d.check("materialise") # UK (en_GB)
>>> True
d.check("materialize") # USA (en_US)
>>> True
希望这对我们未来的读者有所帮助:)
对于 Hunspell 词典,如果两个词典共享同一个.aff
文件并且我想en_US
并en_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
@ Mass17 这实际上是不正确的。该表达式"en_US" and "en_UK"
是对 2 个结果为 的字符串的逻辑与运算"en_UK"
。以下是 AND 运算符在上述表达式中的工作方式:(1) 首先,考虑任何非空字符串True
,(2) 如果左侧字符串为 True,则检查并返回右侧字符串。阅读 Python 的短路评估,了解它为何以这种方式工作。
所以:
>>> "en_US" and "en_UK"
'en_UK'
请注意,如果您切换字符串的顺序:
>>> "en_UK" and "en_US"
'en_US'
“materialise”和“materialize”这两个词都出现在你的"en_UK"
字典中,因此你得到了结果。您实际上还没有“组合”这两个字典。