最近在教儿子做自然拼读,跟他玩了一个单词游戏,就是利用简单的枚举找出适合小朋友学习的两个字母的单词。人工找寻难免有疏漏之处,这里使用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. @property与@xxx.setter的用法

    类中@property与@xxx.setter的方法介绍. 简单说,@property就是将定义的函数(方法)当作属性对象使用,不需要像调用函数那样去调用,而@xxx.setter是为@xxx的这样函 ...

  2. swift(二)swift字符串和字符和逻辑运算

    /* 1.swift字符串和字符 2.构造字符串 3.字符串比较 4.数值运算 5.复制运算 6.关系运算 7.逻辑运算 8.区间运算 */ /* //数据 + 数据的处理 //字符信息+ 字符信息的 ...

  3. 【原】Spring测试类代码

    package test; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.bea ...

  4. HeadFirst设计模式---观察者

    表达公式 注册者 + 订阅者 = 观察者模式 设计气象站 气象站接口 /** ** 布告板 ** @author lollipop ** @since 2019/11/24 **/ public in ...

  5. 【vuejs】vue数组操作

    问题:两种操作都能给数组添加数据,但是利用下标添加数据不会自动在视图中渲染,这个是和vue自己的规定有关,这里记录一下 网上到原因,这里附转载链接 点我传送 官网相关说明传送门

  6. springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

    SpringCloud全家桶中的分布式配置中心SpringCloudConfig, 它使用git来管理配置文件, 在修改配置文件后只需要调用一个接口就可以让新配置生效, 非常方便. SpringClo ...

  7. JS高阶---原型链

    [大纲] [主体] 1.创建函数 注意:Object内置原生对象原来就有 2.添加实例方法 3.根据构造函数创建实例对象 原型链寻找 1.本身有在本身找 2.本身没有往摸着隐式原型链往里找 或者再上层 ...

  8. webpack开发指南1

    怎么安装Webpack 安装node.js 首先需要安装Node.js,node自带了包管理工具npm. 安装webpack 使用npm install webpack -g,webpack全局安装到 ...

  9. XSS小游戏

    第一关 直接在URL输入 ?name=<script>alert('xss')</script> 第二关 找源码,输入test,value值变为test,我们可以在输入框尝试x ...

  10. python27期day09:函数的初始、函数的定义、函数的调用、函数的返回值、函数的参数、作业题。

    1.函数的作用:封装代码.大量的减少了重复的代码. 2.全局空间:顶行写的就是全局空间. 图解 : 3.函数的定义: def 是一个关键字.申明要定义一个函数 my_len 函数的名字.遵循变量命名的 ...