原出处:
http://www.oschina.net/code/snippet_70229_2366
不同的是作者原来使用sys.argv来获取要查询的单词,还写了帮助文档,而我比较懒,还是喜欢用raw_input多一点,也不用导入sys模块了;另外原来的代码会有中文乱码现象,以及例句中的关键词有符号的读取,我分别采用decode方法和replace方法解决了;再另外设置成while循环,这样的话可以不用每次都手动输入***.py来运行了。python写什么东西真是行云流水一般顺畅。
其实我果然还是懒啊…这种东西本来也可以用wxpython做一个简陋的图形界面来的好一点吧…
截图:
代码:
#!/usr/bin/env python
# -*- coding=gb2312 -*-
import urllib
import re
#是否输出例句
eg=True
def main():
word = raw_input('输入单词:')
xmls = urllib.urlopen('http://dict.cn/ws.php?utf8=true&q=' + urllib.quote(word)).read()
print
print re.search(r'<def>(?P<test>.*?)</def>', xmls, re.M|re.I|re.S|re.U).group('test').decode('utf8')
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].decode('utf8').replace('<em>','').replace('''</em>''',''))
print "%s %s"%(' '*((i+1)/10+1),trans[i].decode('utf8').replace('<em>','').replace('''</em>''',''))
print ''
if __name__ == '__main__':
while True:
main()