【编程学习】每天进步一点点,编程学习之路:一款Mdict词典制作工具,Mdict Editor Tool v2.0.35 – 多功能个性化词典制作工具

这是一篇陈年旧贴,大学无聊的时候学习了Mdict词典的制作,顺手撸了个制作词典的工具,简化词典制作过程,提高词典制作效率。工具发布在了Pdawiki论坛上,供网友下载使用。

原贴传送门:https://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=18986

Mdict Editor Tool v2.0.35 – 多功能个性化词典制作工具

2017.03.27:
发现bug,修正更新。

2017.03.15:
新增提取功能,按HTML标签提取,速度虽然比不上正则,但简单易用,适合没有编程基础的同学,提取更方便。
正则虽强大,速度快,但处理HTML多层嵌套标签就显得力不从心了。
此功能依赖第三方库lxml,软件打包后体积也略大了一点。

关于多个词典CSS类名(class)重名问题,导致词典合并后样式混乱的解决方案
将词典源文本的所有类名批量改名,添一个前缀字符,再将该词典对应的.css文件里的类名批量替换,添加上该前缀字符。
以《21世纪大英汉词典》为例,把词典源文本中所有的类名 class=“example” 添加上 【cent21_】前缀字符(即替换为 class=“cent21_example”;前缀字符由英文字母、数字及下划线组成,且以英文字母开头),与其它词典区分开来。

1.词典源文本正则替换:

class="(.+?)"

替换为

class="cent21_\1"

2.将样式表文件(.css)正则替换:

\.([a-Z])

替换为

.cent21_\1

即可解决合集词典CSS重名问题。该方法仅对class有效。

使用过程中网友遇到的问题解答:
第一类问题:合并词典的词条大小写区分问题
如网友VIPcoco所描述的问题: 36楼 place词条 language的内容跑道所有内容前面去了,mac下的欧路。
及网友rit919所描述的问题: 32楼 wood的人名词条重复出现extras区的最底部,而不是顶部。查cook,bush等词也有同样情况

原因及解决办法: 见原帖39楼 https://www.pdawiki.com/forum/fo … &fromuid=203976

第二类问题:词典合并后javascript脚本报错
这种问题归结为两种情况
第1种情况:MDcict PC打开合集词典进入某个词条(还未点击切换按钮)时就弹出javascript脚本错误。
这是由于个别词典个别词条内容下的源数据本身问题,也就是说原词典(合并前)在MDict PC中进入某些词条会报错,词典合并后错误仍然存在,导致合集词典(xin1)也报错。
这种情况只能找词典原作者修复词典。
第2种情况:MDcict PC打开合集词典进入某个词条之后点击切换按钮切换词典时弹出javascript脚本错误。
这种还是词典源数据问题,导致程序新生成的div标签无法闭合,javascript找不到对象,导致切换词典时抛出错误。
这种情况下导致合集词典(xin1)切换时抛出错误的原词典由于源数据差异,并不适合做该合并方式的合集词典。
出现第2种情况时错误排查:
比如:A、B、C、D、E词典合并后"farther"词条出现此错误(即点击切换按钮则报错),那么应该就是这五个词典中的其中一个或多个词典源数据HTML标签无法闭合而导致的该问题。具体排查方法如下:

1.将合并词典源文件后缀改为.html(用于显示语法高亮),使用EmEditor打开,查找正则:^farther\r\n,勾选正则表达式,查找定位到所查找的行。

2.复制该项词条下的内容(HTML源码),创建新的HTML文档,粘贴到刚刚创建的HTML文档

3.将显示切换为“wrap by page”

然后正则替换<div class="dict_content_display\r\n\r\n\r\n<div class="dict_content_display,再将鼠标逐个点击到<div class="dict_content_display标签上,EmEditor自动着色显示该标签是否已完整闭合,若某个标签不能闭合,则就是该标签下的词典内容所导致的合集词典在切换某个词条时报错,这样就找到了源数据有问题的词典。

在这里插入图片描述

4.最后一步就是修正有问题的词典源数据了,具体操作就要看情况而言了。

第三类问题:词典合并后的@@@LINK=
@@@LINK=这个用法我没有用过,不了解用法,不便谈论。
程序更新已解决这个问题,只是简单粗暴地用正则把@@@LINK=替换成跳转链接,点击便跳转到主词条。

------------ 假装华丽的分割线 ------------

Mdict Editor Tool v2.0.35

软件功能简介:

◆1.词典内容提取
①按单词列表提取。
②按正则表达式提取。如提取例句、音标、释义等。
③提取词典中所有词条。
④按HTML标签提取。

◆ 2.多词典合并
可合并多部词典,合并样式丰富,可自由选择样式。
程序自动生成CSS、JavaScript文件。
理论上可以合并任意无限多个词典,但合并词典数量取决于电脑本身配置。

◆ 3.词典锚点与制作
用于Mdict词典锚跳定位自动化制作,如词组短语、例句、释义、音标等多维查询词典制作。

◆ 4.词条合并
只需确定词头的所在的标签,便可自动给词头的右上角加入序号。同时生成可定位查找的词头标题。

◆ 5.词条去重

◎ 启动软件时部分功能已经预设完毕,刚开始使用此软件的同学可直接点击右下方按钮尝试制作。

【编程学习】每天进步一点点,编程学习之路:一款Mdict词典制作工具,Mdict Editor Tool v2.0.35 -- 多功能个性化词典制作工具相关推荐

  1. 学习笔记:Java 并发编程②_管程

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 配套资料: ...

  2. Python学习笔记:开始Python编程

    随着人工智能以及大数据的火热,Python这门语言也被推上了前台,越来越受大家的青睐.受不住诱惑,我也开始努力学习这门语言.边学习,边整理自学笔记,与大家分享,也接受大家的监督,让自已能够坚持下去,熟 ...

  3. 学习ASP.NET Core Razor 编程系列九——增加查询功能

    原文:学习ASP.NET Core Razor 编程系列九--增加查询功能 学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.N ...

  4. SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制...

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...

  5. 计算机科学CSTA,学编程,搞懂CSTA K-12计算机科学学习标准

    科学信息技术逐步成为现代人生活和经济的核心.不论是为了适应频繁使用计算机的当今社会,还是为了将来的职业做好准备,学生们都必须对计算机科学原理和实践拥有一个更加清晰的理解.在人们对于信息技术教育的普及与 ...

  6. 初中生自学python能学成吗-Python进入初中生学习课堂?风变编程助你从后浪中成功突围...

    都知道现在 Python 这门编程语言很火,那它究竟火到什么程度?可能互联网上铺天盖地的 Python 学习贴不够直观,求职平台上 Python 相关工资水涨船高,也离我们普通人太远,但-- Pyth ...

  7. python是什么语言开发的-少儿编程有什么好处?儿童编程课程学习Python的4大原因...

    儿童编程Python是什么课程? Python是强制用一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public Li ...

  8. 编程软件python怎样开始学-编程零基础应当如何开始学习 Python?

    编程零基础应当如何开始学习Python 我觉得每个人学习新东西之前脑海里应该有个大致的地图和路径 比如学习编程,首先脑海里要比较清晰的思考寻找过下面几个问题的答案什么是编程 为什么学编程 编程可以干什 ...

  9. python语言怎么学-如何从零开始学习Python,python语言编程入门

    Python并不难学,它诞生至今已经过25个年头,但相对于其他语言,它更加易学.易读,非常适合快速开发,Python编程简单直接,更适合初学编程者. 那么,如何从零开始学习python呢? 可以分为这 ...

  10. 编程学习初体验(4. 编程的核心)

    初学编程的朋友,总觉得写程序是件单纯的事情:知道如何使用一种语言,熟悉一个开发环境,了解系统的编程接口(API)就已经能够成为一个合格的程序员 了.在我刚刚接触编程学习的时候,我也是这么认为的.这种认 ...

最新文章

  1. E. coli Bacterial Assembly 大肠杆菌
  2. 讨论丨深度学习已经成为过去?迁移学习才是真正的未来?
  3. 自适应图像降噪滤波器的设计与实现
  4. python迭代器使用_python迭代器的使用方法实例
  5. 函数read、write、lseek
  6. 如何在iOS上运行React Native应用
  7. C语言:为什么用fprintf(stderr,Error);比printf(Error);更好?
  8. 语法糖 python_Python___语法糖
  9. 转:word2vec 中的数学原理详解
  10. ApacheCN DevOps 译文集(二)20211230 更新
  11. 分享“消防图纸”识图方法,让你一眼秒懂!
  12. eventFilter能进入dragEnter但没有event::drog
  13. 台式机通过笔记本上网的方法
  14. 创新数据库技术 成就IOD愿景携DB2 25载创新 IBM推新“信息议程”
  15. [课业] 09 | 软工 | 软件工程的发展
  16. 防止小孩长时间沉迷电脑游戏-卓越电脑定时关机软件
  17. 产品经理和项目经理的区别,读这一篇就够了!(史上最全总结)
  18. 从Lintel平台到Sun CoolThreads系统迁移时用的一些工具
  19. Unity IAP Google支付问题汇总(排雷指南)(持续更新...)
  20. MIR DATABANK自动化和智能制造每周要闻 —2019年10月15日

热门文章

  1. Windows 如何设置新建文本文档快捷键
  2. 五子棋java_Java五子棋小游戏完整源代码
  3. 方差分析软件_Minitab统计软件入门(一)
  4. 开源软件不等于免费软件(弄清开放源代码许可证很重要)
  5. 使用docker运行Mysql客户端
  6. linux odbc 配置文件,linux操作系统配置ODBC数据源
  7. J2ME开发模拟器KEmulator简介及使用
  8. Java笔记之入门(一)
  9. YACC(BISON)使用指南
  10. 【转】MP3文件原理及结构解析