原出處:
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()