最近在读经济学人,阅读的时候遇到不认识的单词不想停下来查词典,我寻思如果这些单词的中文解释自动标注在旁边就好了。之前我已经做了个小工具(link),阅读的时候运行程序不断读取剪切板里的英文单词,并生成对应的中文解释,但是我无法在手机上使用程序。为了解决这个问题,我需要利用计算机将文章里我可能不认识的单词自动翻译并标注,这样省去了手机上阅读时的查询过程,从而实现流畅阅读。
############################################################
代码思路
1.以雅思词库(7600)作为我认识的词汇,创建excel文件word_list
(将来会将更多单词写入文件,并利用excel排序维持有序性,也可导出单词到其他英语学习软件进行复习)
2.对文章里的每一个单词,判断是否存在于词库,不存在则写入highlight.txt
(英语中动词可能有不同形式compete-competed-competing,名词可能有复数,解决方案是进行匹配忽略每个单词的后三位,单词长度少于6位的视为简单词,不进行匹配)
3.查找并高亮word文档里出现在highlight.txt文件中的单词
4.翻译highlight.txt文件中的单词写入translate.txt
############################################################
代码实现
1.使用python-docx处理word文档
#得到文章里的每一个单词
document = Document('text.docx')
fullText=[]
for p in document.paragraphs:
fullText.append(p.text)
str=' '
fullText=str.join(fullText)
fullText = re.sub('[^a-zA-Z ]','',fullText)#将除字母之外的字符去掉,如1000,',……
arr__test =fullText.split()
2.使用openpyxl将excel中的一列转换成一个数组

#得到词库里的每一个单词
f_highlight = open('highlight.txt','w')
wb=openpyxl.load_workbook('word_list.xlsx')
sheet= wb.active
arr_word_list=list(sheet.columns)[0]
3.excel里的单词已经按照字典序排列,使用二分法判断里的文章单词是否存在于词库(查找结束后会自动打开highlight,txt,有需要的话可以手动删一下地点名词和人名,加快翻译速度)
def binarySearch (arr, l, r, x):
if r <

本文介绍了一种利用Python自动化处理英文阅读材料的方法,通过比对个人词库,自动识别并翻译未知单词,同时在文档中高亮显示,提升阅读效率。

4186

被折叠的 条评论
为什么被折叠?



