某汉英词典解析代码

我在这儿提供一个修改拼音的Python程序。
py.py (559 字节)
py.txt (954 字节)

用法:
把上面这两个文件,以及你已经用楼主转换好的txt文件,改名为CC-CEDICT.txt(或者你进py.py文件把里面的相应的词典名改成你的那个txt的名字),然后运行就行了。

注:因为列举所有完整的拼音太麻烦了,我懒得弄,py.txt里面就只有韵母部分的替换,难免有正常文字部分恰好含有这些字符而被替换掉了,谁发现在知会我一声儿,或者做一个完整的拼音替换列表,也烦请知会我一声儿。另外,如果你是在Linux下运行的这个程序,得到了一个替换后的CC-CEDICT.txt文件,但是当你把这个txt拷到Windows电脑上的时候,在mdxbuilder做成词典时会有问题,这时你只要在Windows上把txt内容复制并粘贴到一个新的txt里就好了,我觉得主要原因就是Linux和Windows换行符不一样导致的。

2 个赞

重新做了一版 CC-CEDICT。修了一下拼音(儿化音、匹配、缺省等方面)。

extract11.py (2.5 KB)

6 个赞

lurker哥威武

1 个赞

制作辛苦,多谢哈。

我通常不看好自己写的代码,但本帖这份,实有可圈可点之处,有心人多年后应该还能用它来解析 CC-CEDICT。用到它的人,可以的话,请分享产出。

4 个赞

请问我需要怎么调整 才能生成下面的样式?

我暂时无法将 <span class="cc_trad">21三體綜合症 21三体综合症</span>

改成

<span class="cc_trad">21三體綜合症</span>
<span class="cc_simp">21三体综合症</span>

这是我目前的 extract.py 文件

        headwords = list(dict.fromkeys(line.split(" [")[0].split()))
        pinyin = line.split(" [")[1].split("] ")[0]
        definitions = line.split(" /")[1].strip("/").split("/")

        css = '<link href="cedict.css" rel="stylesheet">'
        header = '<div class="cc_wrapper"><div class="cc_header"><span class="cc_trad">' + ' '.join(headwords) + '</span></div><div class="cc_header_pinyin">' + pinyin + '</div>'
        defs = '<div class="cc_defs"><p class="cc_def">' + ' '.join(definitions) + '</p></div></div>'

我希望能生成这样的文件

21三体综合症
<link href="cedict.css" rel="stylesheet">
<div class="cc_wrapper">
    <div class="cc_header">
        <span class="cc_trad">21三體綜合症</span>
        <span class="cc_simp">21三体综合症</span>
    </div>
    <div class="cc_header_pinyin">èr shí yī sān tǐ zōng hé zhèng</div>
    <div class="cc_defs">
        <p class="cc_def">trisomy</p>
        <p class="cc_def">Down's syndrome</p>
    </div>
</div>

我目前只能生成下面的样式

21三体综合症
<link href="cedict.css" rel="stylesheet">
<div class="cc_wrapper">
    <div class="cc_header">
        <span class="cc_trad">21三體綜合症 21三体综合症</span>
    </div>
    <div class="cc_header_pinyin">èr shí yī sān tǐ zōng hé zhèng</div>
    <div class="cc_defs">
        <p class="cc_def">trisomy Down's syndrome</p>
    </div>
</div>

[extract.py|attachment](upload://6FLBUez5RJT7ldwyE7IwPBMSKqJ.py) (1.4 KB)

分享下我的流程,假设cedict_ts.u8原始词条:

龠 龠 [yue4] /ancient unit of volume (half a 合[ge3], equivalent to 50ml)/ancient flute/

  1. 仅替换第一个 [ 和 ] 为Tab \t
  2. 以\t为分隔符,拆分出字头、拼音cc_header_pinyin、释义
  3. 以空格为分隔符,拆分出繁体字头cc_trad、简体字头cc_simp。
  4. 以 / 分隔符,拆分出英文释义cc_def

这样后续处理排版就很方便了

跟你说的去重没关系, 我只是想知道 header 怎么写 才能将显示我想要的结果 我看了你的extract11.py 文件 然后修改成下面这样 就可以实现效果了

header = '<div class="cc_wrapper"><div class="cc_header"><span class="cc_trad">' + '</span><span class="cc_simp">'.join(headwords) + '</span></div><div class="cc_header_pinyin">' + pinyin + '</div>'

目前效果

502胶
<link href="cedict.css" rel="stylesheet">
<div class="cc_wrapper">
    <div class="cc_header">
        <span class="cc_trad">502膠</span>
        <span class="cc_simp">502胶</span>
    </div>
    <div class="cc_header_pinyin">wǔ líng èr jiāo</div>
    <div class="cc_defs">
        <p class="cc_def">cyanoacrylate glue</p>
    </div>
</div>
</>

你这样改,繁简同形的词头、繁体词头用的都是 span.cc_trad 。不能实现 okayer 那种排版。

没事 我的这样的排版也行,不行可以把繁体词头隐藏起来

这种写法,很难隐藏繁体词头。也不建议隐藏,或制作简体版,因为存在一种情况:

㥦 惬 [qie4] /variant of 愜|惬[qie4]/

很好奇你是怎么处理拼音音调的。

我用的这个 py.txt (954 字节)

1 个赞

py.txt 没有考虑到所有情形,还可能误替换。不妨看看我在 extract11.py 里是怎么处理拼音的。

我也不是很懂, 这是在另一个帖子看到的 CC-CEDICT制作mdx自助

1 个赞

隔壁ff和bt4baidu技术最好,ff被迫离开,bt4baidu潜水了,其他人的水准都差一个档次,ff离开真的是重大损失。

fearfare090807 即使没跟站务闹矛盾,也不可能十年如一日地制作 MDX。人能自由支配的时间本就不多,其中一小部分用于学习,学习时间的一小部分用于查字典。FF 抽时间制作了他要用、众人也用得着的 MDX,做完就撤了,这结局很好,非要他留下来继续做公益,那就成他的“重大损失”了。

我想ff就是单纯地把自己的杰作分享给大家,当然他自愿什么时候停止都是ok的,甚至ff的作品收点费用我都觉得是ok的,因为质量过硬,可能ff自己都没楼主想的那么远,那么功利。

你不功利,你来替我免费干活吧。FF ,你,我,所有人的时间都是宝贵的。别慷他人之慨。

1 个赞

我没有慷他人之慨,本站一切建立在自愿的基础上,也是来去自由,我也对你的工作和作品不感任何兴趣,如果功利二字伤到你的自尊心了,说声抱歉,就此打住。