最近在教儿子做自然拼读,跟他玩了一个单词游戏,就是利用简单的枚举找出适合小朋友学习的两个字母的单词。人工找寻难免有疏漏之处,这里使用PyEnchant给出一个简单的脚本。

01 - foo.py

 #!/usr/bin/python3
"""
A simple script to check a string is an English word 1. download PyEnchant from https://pypi.org/project/pyenchant/
2. save pyenchant-2.0.0.tar.gz to /tmp
3. tar zxf pyenchant-2.0.0.tar.gz
4. export PYTHONPATH=/tmp/pyenchant-2.0.0:$PYTHONPATH
5. ./foo.py <string>
""" import sys
import enchant def is_english_word(word):
d_en = enchant.Dict("en_US")
return d_en.check(word) def get_alphabet():
l_alph = []
for i in range(26):
l_alph.append(chr(ord('a') + i))
return l_alph def main(argc, argv):
if argc != 2:
sys.stderr.write("Usage: %s <char>\n" % argv[0])
return 1 char_in = argv[1] l_word1 = []
l_alph = get_alphabet()
for char in l_alph:
word = char_in + char
if is_english_word(word):
l_word1.append(word)
print(l_word1) l_word2 = []
for char in l_alph:
word = char_in + char
word = word.upper()
if is_english_word(word):
if word.lower() in l_word1:
continue
l_word2.append(word)
print(l_word2)
return 0 if __name__ == '__main__':
sys.exit(main(len(sys.argv), sys.argv))

很简单,核心代码就是:

def is_english_word(word):
d_en = enchant.Dict("en_US")
return d_en.check(word)

02 - 测试foo.py

kaiba$ ./foo.py 'a'
['ab', 'ac', 'ad', 'ah', 'am', 'an', 'as', 'at', 'av', 'aw', 'ax']
['AA', 'AF', 'AG', 'AI', 'AK', 'AL', 'AP', 'AR', 'AU', 'AZ']
kaiba$ ./foo.py 'b'
['be', 'bf', 'bi', 'bk', 'bl', 'bu', 'bx', 'by']
['BA', 'BB', 'BC', 'BM', 'BO', 'BP', 'BR', 'BS']
kaiba$ ./foo.py 'be'
['bed', 'bee', 'beg', 'bet', 'bey']
['BEN']
kaiba$ ./foo.py 't'
['ta', 'ti', 'tn', 'to', 'tr', 'ts']
['TB', 'TC', 'TD', 'TE', 'TH', 'TL', 'TM', 'TU', 'TV', 'TX', 'TY']
kaiba$ ./foo.py 'tea'
['teak', 'teal', 'team', 'tear', 'teas', 'teat']
[]

附记 - foo.sh (直接egrep /usr/share/dict/words)

 #!/bin/bash

 function is_english_word
{
typeset word=${?"*** str, e.g. a"}
egrep "^$word$" /usr/share/dict/words > /dev/null >&
return $?
} (( $# != )) && echo "Usage: $0 <str prefix>" >& && exit
str_prefix=$ lwords=""
uwords=""
for c in {a..z}; do
typeset -l lword=$str_prefix$c
typeset -u uword=$lword
is_english_word $lword && lwords+="$lword "
is_english_word $uword && uwords+="$uword "
done lwords=$(echo $lwords)
uwords=$(echo $uwords)
rc=
[[ -n $lwords ]] && echo $lwords && rc=
[[ -n $uwords ]] && echo $uwords && rc=
exit $rc
  • 运行foo.sh
$ for c in {a..z}; do ./foo.sh $c; echo; done
aa ab ac ad ae af ag ah ai ak al am an ap aq ar as at av aw ax ay az
AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AY AZ ba bb bd be bf bg bi bk bl bm bn bo bp br bs bt bu bv bx by bz
BA BB BC BD BE BF BG BH BI BL BM BN BO BP BR BS BT BU BV BW BX ca cb cc cd ce cf cg ch ck cl cm co cp cq cr cs ct cu cv cy
CA CB CC CD CE CF CG CH CI CJ CL CM CN CO CP CQ CR CS CT CU CV CW CY CZ da db dc dd de dg di dj dk dl dm dn do dp dr ds dt du dx dy dz
DA DB DC DD DE DF DG DH DI DJ DK DM DN DO DP DQ DR DS DT DU DV DW DX DZ ea ec ed ee ef eg eh el em en eo ep eq er es et eu ew ex ey
EA EC ED EE EF EG EI EL EM EO EP EQ ER ES ET EV EW fa fb fc fe ff fg fi fl fm fn fo fp fr fs ft fu fv fw fy fz
FA FB FC FD FE FF FI FL FM FO FP FR FS FT FV FW FX FY ga gd ge gi gl gm gn go gp gr gs gt gu gv
GA GB GC GD GE GG GH GI GM GN GO GP GQ GR GS GT GU GW ha hb hd he hf hg hi hl hm ho hp hq hr hs ht hv hw hy
HA HB HC HD HE HF HG HH HI HJ HK HL HM HO HP HQ HR HS HT HU HV HW HZ ia ib ic id ie if ii ik il im in io iq ir is it iv iw ix
IA IB IC ID IE IF IG IL IM IN IO IP IQ IR IS IT IU IV IW IX ja jg jo jr js jt
JA JC JD JI JJ JO JP JV ka kb kc kg ki kl km kn ko kr kt kv kw ky
KB KC KD KE KG KI KN KO KP KR KS KT KV KW KY la lb lc ld le lf lg lh li ll lm ln lo lp lr ls lt lu lv lx ly
LA LB LC LD LE LF LG LH LI LJ LL LM LO LP LR LS LT LU LV LW LZ ma mb mc md me mf mg mh mi mk ml mm mn mo mp mr ms mt mu mv mw my
MA MB MC MD ME MF MG MH MI MJ ML MM MN MO MP MR MS MT MU MV MW MX MY na nb nd ne ng ni nj nl nm no np nr ns nt nu nv ny
NA NB NC ND NE NF NG NH NI NJ NL NM NP NQ NS NT NU NV NW NY NZ ob oc od oe of og oh ok ol om on op or os ot ow ox oy oz
OA OB OC OD OE OF OG OH OK OL OM ON OO OP OR OS OT OU OV OW pa pc pd pe pf pg ph pi pk pl pm po pp pq pr ps pt pu
PA PB PC PD PE PF PG PH PI PK PL PM PN PO PP PQ PR PS PT PU PV PW PX PY qe qh ql qm qn qp qr qs qt qu qv qy
QA QB QC QD QE QF QM QN QP QR QS QV ra rc rd re rf rg rh rm rn ro rs rt
RA RB RC RD RE RF RH RI RJ RL RM RN RO RP RQ RR RS RT RU RV RW RX sa sb sc sd se sf sg sh si sk sl sm sn so sp sq sr ss st su sv sw
SA SB SC SD SE SF SG SI SJ SL SM SN SO SP SR SS ST SU SV SW SX SY ta tb tc te tg th ti tk tm tn to tp tr ts tu tv tx
TA TB TC TD TE TG TH TI TL TM TN TO TP TR TS TT TU TV TW TX uc ug uh ui um un up ur us ut ux
UA UB UC UG UH UI UK UL UN UP UR US UT UU UV UW va vb vc vd vg vi vl vo vp vr vs vt vv
VA VB VC VD VE VF VG VI VJ VL VM VN VO VP VR VS VT VU VV VW wa wb wc wd we wf wg wh wi wk wl wm wo wr ws wt wy
WA WB WC WD WF WG WH WI WL WM WO WP WR WS WU WV WW WY xc xd xi xr xs xu xw xx
XA XB XD XL XN XO XP XQ XT ya yd ye yi ym yn yo yr ys yt
YA YB YP YT YU YV YY za zn zo zs
ZA ZB ZD ZG ZI ZK ZT ZZ

[Python学习笔记-007] 使用PyEnchant检查英文单词的更多相关文章

  1. Python学习笔记007

    赋值运算符 num+=1 num=num+1 num-=1 num=num-1 num*=2 num=num*2 num/=2 num=num/2 num//=2 num=num//2 num%=2 ...

  2. Python学习笔记(六)

    Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...

  3. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  4. python学习笔记(一)、列表和元祖

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...

  5. Deep learning with Python 学习笔记(10)

    生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...

  6. Deep learning with Python 学习笔记(1)

    深度学习基础 Python 的 Keras 库来学习手写数字分类,将手写数字的灰度图像(28 像素 ×28 像素)划分到 10 个类别 中(0~9) 神经网络的核心组件是层(layer),它是一种数据 ...

  7. Python学习笔记(十二)—Python3中pip包管理工具的安装【转】

    本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  8. Python学习笔记之类与对象

    这篇文章介绍有关 Python 类中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中类的使用技巧 1.与类和对象相关的内置方法 issubclass(class, classinfo) ...

  9. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

随机推荐

  1. MES系统如何帮助烟草行业管理生产流程

    与很多其他行业一样,烟草MES系统可以帮助卷烟企业实现智能生产.精益制造.快速实现烟草企业数字化车间的创建,助力企业实现改造升级,从而提升企业生产效率,降低生产成产.烟草行业得MES者得天下. 烟草行 ...

  2. 关与 @EnableConfigurationProperties 注解

    @EnableConfigurationProperties注解的作用是: 让使用 @ConfigurationProperties 注解的类生效. 当@EnableConfigurationProp ...

  3. 10. [mmc subsystem] host(第四章)——host实例(sdhci-msm说明)

    一.说明 sdhci-msm是指高通的mmc host,其使用了标准SDHC标准.故可以使用前面说的<host(第二章)--sdhci>和<host(第三章)--sdhci-pltf ...

  4. E06 【买衣服】Maybe you need a bigger size

    核心句型 Maybe you need a bigger size 也许您需要大一些的. 场景对话 A:Can I try this jacket on,please? 我能试试这件夹克吗? B:Su ...

  5. 使用spring jdbc遇到的一个性能问题

    使用JdbcTemplate的queryForList方法,返回特别慢,40多万结果集耗时超过6分钟.双核CPU,占用率始终在50%,内存逐渐增长至2G左右. 进行debug跟进去看,看到jdbcTe ...

  6. 201871010110-李华《面向对象程序设计(java)》第十六周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  7. 201871020225-牟星源《面向对象程序设计(java)》第十四周学习总结

    201871020225-牟星源<面向对象程序设计(java)>第十四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  8. Mysql8.0中caching_sha2_password报错解决

    https://blog.csdn.net/litte_frog/article/details/80874105

  9. springboot+springmvc拦截器做登录拦截

    springboot+springmvc拦截器做登录拦截 LoginInterceptor 实现 HandlerInterceptor 接口,自定义拦截器处理方法 LoginConfiguration ...

  10. Spring事务异常rollback-only 笔记

    造成以上异常的原因情形: 在spring里面我们配置了事务的传播机制是REQUIRED,所以这两个事务最终会合并成一个事务.当a方法调用b方法时,程序中a方法中由于某某原因导致抛出异常(或者明确将该事 ...