dict查字典程序,效果还可以

由本社区发起的开源项目
回复
adam_at_eden
帖子: 1
注册时间: 2008-12-06 2:13

dict查字典程序,效果还可以

#1

帖子 adam_at_eden » 2008-12-06 2:30

:em02

作者源代码里面没有对音标特殊字符处理,我在使用的过程觉得不是很爽,就动手修改了一下.
在debian,gcc4.2环境下编译通过,ubuntu应该没问题. :em06
附件
dict.tar.gz
(7.58 KiB) 已下载 205 次
huffman_tree
帖子: 1
注册时间: 2008-12-28 15:25

Re: dict查字典程序,效果还可以

#2

帖子 huffman_tree » 2008-12-28 15:42

:em01 对源程序进行了适当修改,去掉了mp3的链接地址,修正部分音标显示的问题,同时把音标括起来,使用起来更舒服些。
附件
dict2.tar.bz2
(8.08 KiB) 已下载 198 次
jam2008
帖子: 8
注册时间: 2008-11-12 8:13

Re: dict查字典程序,效果还可以

#3

帖子 jam2008 » 2009-02-17 21:22

下来试一下
。。。。。。。。。。
sofoot
帖子: 22
注册时间: 2006-09-10 15:18

Re: dict查字典程序,效果还可以

#5

帖子 sofoot » 2010-07-13 23:08

之前一直用的是一个Python脚本,也是从dict.cn获取信息,但是没有音标。根据楼主的源码,添加了音标支持。

代码: 全选

#!/usr/bin/python
#coding=utf-8

import urllib
import sys
#import xml.dom.minidom
import re

#是否输出例句
eg=True

#音标字符
prons = [['æ', chr(0xc3)+chr(0xa6)], ['ʊ', chr(0xca)+chr(0x8a)],
         ['ə', chr(0xc9)+chr(0x99)], ['θ', chr(0xce)+chr(0xb8)],
         ['ð', chr(0xc3)+chr(0xb0)], ['ʌ', chr(0xca)+chr(0x8c)], 
         ['ʃ', chr(0xca)+chr(0x83)], ['ɑ', chr(0xc9)+chr(0x91)], 
         ['ˌ', chr(0xcb)+chr(0x8c)], ['ɛ', chr(0xc9)+chr(0x9b)], 
         ['ʒ', chr(0xca)+chr(0x92)], ['ŋ', chr(0xc5)+chr(0x8b)], 
         ['ɔ', chr(0xc9)+chr(0x94)]]

def main():
    if len(sys.argv) >= 2:
        word = " ".join(sys.argv[1:])
        xmls = urllib.urlopen('http://dict.cn/ws.php?utf8=true&q=' + urllib.quote(word)).read()
        print re.search(r'<key>(?P<key>.*?)</key>', xmls, re.M|re.I|re.S|re.U).group('key'),
        pron = re.search(r'<pron>(?P<pron>.*?)</pron>', xmls, re.M|re.I|re.S|re.U).group('pron')
        for c in prons:
            pron = pron.replace(c[0], c[1])
        print '[%s]'% pron
        print re.search(r'<def>(?P<test>.*?)</def>', xmls, re.M|re.I|re.S|re.U).group('test')
        if eg:
            print
            origs=re.findall(r'<orig>(?P<orig>.*?)</orig>', xmls, re.M|re.I|re.S|re.U)
            trans=re.findall(r'<trans>(?P<trans>.*?)</trans>', xmls, re.M|re.I|re.S|re.U)
            for i in range(len(origs)):
                print "%d. %s"%(i+1,origs[i])
                print "%s  %s"%(' '*((i+1)/10+1),trans[i])
    else:
        help()

def help():
    print 'usage:dict.py [word]'

if __name__ == '__main__':
    main()
回复