首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在enchant中可以传递多个字典吗?

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

Stack Overflow用户
提问于 2019-10-24 19:43:30
回答 3查看 319关注 0票数 7

有没有办法在enchant中使用多个字典。这就是我要做的

代码语言:javascript
运行
复制
import enchant
d = enchant.Dict("en_US")
d.check("materialise")
>> False

但是如果我使用enchant.Dict("en_UK"),我会得到True。组合多个字典的最好方法是什么,这样无论输入参数是materialise还是materialize,它都将返回True

EN

回答 3

Stack Overflow用户

发布于 2019-10-24 20:20:33

对于en_US字典,如果两个字典共享相同的.aff文件,并且我认为Hunspell和en_GB都通过了这个条件,那么就可以解决这个问题。

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

代码语言:javascript
运行
复制
#!/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 

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

代码语言:javascript
运行
复制
$ dic_combine en_US.dic en_GB.dic > en.dic
票数 1
EN

Stack Overflow用户

发布于 2019-10-28 21:32:22

@Mass17这实际上是不正确的。表达式"en_US" and "en_UK"是对结果为"en_UK"的2个字符串进行逻辑AND运算。下面是上面表达式中AND运算符的工作方式:(1)首先,任何非空字符串都被认为是真的,(2)如果左边的字符串为True,那么检查并返回右边的字符串。阅读有关Python的短路评估的文章,了解它为什么会以这种方式工作。

所以:

代码语言:javascript
运行
复制
>>> "en_US" and "en_UK"
'en_UK'

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

代码语言:javascript
运行
复制
>>> "en_UK" and "en_US"
'en_US'

单词"materialise“和"materialize”都会出现在您的"en_UK"字典中,因此您会得到这样的结果。你还没有真正“组合”这两个字典。

票数 1
EN

Stack Overflow用户

发布于 2021-10-12 12:32:50

我可能来晚了,但这个问题也引起了我的兴趣。

因此,在Python的enchant中使用多种英语方言的解决方案如下:

代码语言:javascript
运行
复制
    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

希望这对我们未来的读者有帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58540651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档