[Python学习笔记-007] 使用PyEnchant检查英文单词
最近在教儿子做自然拼读,跟他玩了一个单词游戏,就是利用简单的枚举找出适合小朋友学习的两个字母的单词。人工找寻难免有疏漏之处,这里使用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检查英文单词的更多相关文章
- 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 ...
- Python学习笔记(六)
Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...
- python学习笔记(二)、字符串操作
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...
- python学习笔记(一)、列表和元祖
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...
- Deep learning with Python 学习笔记(10)
生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...
- Deep learning with Python 学习笔记(1)
深度学习基础 Python 的 Keras 库来学习手写数字分类,将手写数字的灰度图像(28 像素 ×28 像素)划分到 10 个类别 中(0~9) 神经网络的核心组件是层(layer),它是一种数据 ...
- Python学习笔记(十二)—Python3中pip包管理工具的安装【转】
本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...
- Python学习笔记之类与对象
这篇文章介绍有关 Python 类中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中类的使用技巧 1.与类和对象相关的内置方法 issubclass(class, classinfo) ...
- python 学习笔记 12 -- 写一个脚本获取城市天气信息
近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...
随机推荐
- 2019 梆梆安全java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.梆梆安全等公司offer,岗位是Java后端开发,因为发展原因最终选择去了梆梆安全,入职一年时间了,也成为了面 ...
- python调用时间装饰器检测函数运行时间
用一个装饰器,监控程序的运行时间 import time def count_time(func): def int_time(*args, **kwargs): start_time = time. ...
- PHP 类/对象函数
PHP类/对象函数是PHP核心的一部分,无需要安装就可以使用. 函数名称 描述 __autoload 尝试加载未定义的类 class_alias 为一个类创建别名 class_exists 检查类是否 ...
- vue如何导入外部js文件(es6)
也许大家都是使用习惯了es5的写法喜欢直接用<Script>标签倒入js文件,但是很是可惜,这写法.在es6,或则说vue环境下不支持 真的写法是怎样? 首先.我们要改造我们要映入的外部j ...
- 代码方式给控件添加背景图片(WPF)
wpf中常常需要给控件添加背景图片,下边以wrapPanel为例,使用代码添加背景图片 WrapPanel xwraPanel = new WrapPanel(); ImageBrush ximgBr ...
- vue学习指南:第七篇(详细) - Vue的 组件通信
Vue 的 父传子 子传父 一.父组件向子组件传值: 父传子 把需要的数据 传递给 子组件,以数据绑定(v-bind)的形式,传递到子组件内部,供子组件使用 缩写是(:) 1.创建子组件,在src/ ...
- 智能家居-2.基于esp8266的语音控制系统(硬件篇)
智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) 赞赏支持 QQ:505645 ...
- 软工Alpha七天冲刺
七天冲刺博客: 1.第一篇Scrum冲刺博客 2.第二篇Scrum冲刺博客 3.第三篇Scrum冲刺博客 4.第四篇Scrum冲刺博客 5.第五篇Scrum冲刺博客 6.第六篇Scrum冲刺博客 7. ...
- 谁有好的oracle数据库学习书籍,麻烦提供一下,感激不尽
作为一个IT人员,想深入学习一下oracle,以前都只是懂基本的语法,CRUD 数据库设计,数据库优化,底层完全不懂,哪位仁兄有好的书籍可以推荐一下,感激不尽.
- seafile部署安装
安装epel源 yum install epel-release -y 安装docker yum install -y docker service docker start systemctl en ...