2025年3月25日 星期二 甲辰(龙)年 月廿四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

使用Python调用mdx字典文件进行查词

时间:09-17来源:作者:点击数:104

简介

  • 本文只是记录一下,自己用python从mdx字典文件中批量提取单词和所需部分词义的代码。
  • 如果你是需要自己打包制作或编辑mdx文件,可以去pdawiki论坛,那里有完整的字典制作专区,可以了解方法。

正文

mdx离线自制字典、或者是anki这种学习工具,以及其扩展衍生工具很多都是Python编写的,各种工具模块其实非常多。

如果你只想从mdx中查词返回词义,其实很简单的模块调用就能办到。

  • from readmdict import MDX, MDD # pip install readmdict
  • from pyquery import PyQuery as pq # pip install pyquery
  • '''
  • # 如果是windows环境,运行提示安装python-lzo,但
  • > pip install python-lzo
  • 报错“please set LZO_DIR to where the lzo source lives” ,则直接从 https://www.lfd.uci.edu/~gohlke/pythonlibs/#_python-lzo 下载 "python_lzo‑1.12‑你的python版本.whl"
  • > pip install xxx.whl
  • 装上就行了,免去编译的麻烦
  • '''
  • # 加载mdx文件
  • filename = "TLD.mdx"
  • headwords = [*MDX(filename)] # 单词名列表
  • items = [*MDX(filename).items()] # 释义html源码列表
  • if len(headwords)==len(items):
  • print(f'加载成功:共{len(headwords)}条')
  • else:
  • print(f'【ERROR】加载失败{len(headwords)}{len(items)}')
  • # 查词,返回单词和html文件
  • queryWord = 'Walkman'
  • wordIndex = headwords.index(queryWord.encode())
  • word,html = items[wordIndex]
  • word,html = word.decode(), html.decode()
  • #print(word, html)
  • # 从html中提取需要的部分,这里以the litte dict字典为例。到这一步需要根据自己查询的字典html格式,自行调整了。
  • doc = pq(html)
  • coca2 = doc('div[class="coca2"]').text().replace('\n','')
  • meaning = doc("""div[class="dcb"]""").text()
  • print(coca2)
  • print(meaning)
  • 377924
  • 377924
  • 随身听(100%)
  • n.随身听(商标名称)

简单说一下mdx的构成,里面的每个单词其实都是一个单独的html文件。按照特定格式转换添加索引变成一个压缩包,就变成了mdx字典文件。

这里不需要了解如何解包,直接安装readmict模块就可以实现对mdx的加载得到每个单词的html文件。至于从html里提取词义,和爬虫从网页中提取内容一样,了解一下BeautifulSoup、pyquery之类就可以了,我这里用的是pyquery。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门