鱼C论坛

 找回密码
 立即注册
查看: 7662|回复: 27

[技术交流] Python\有道词典

[复制链接]
发表于 2014-5-2 16:16:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ~风介~ 于 2014-5-3 22:17 编辑

去有道申请一个接口,借鉴一位前辈的代码,写了一个词典程序~
以下是Python2的代码~
  1. #!/usr/bin/env python  
  2.   
  3. import urllib2  
  4. import re  
  5. import json  
  6.   
  7. class Youdao:  
  8.     def __init__(self):  
  9.         self.url = 'http://fanyi.youdao.com/openapi.do'  
  10.         self.key = '695028818' #有道API key  
  11.         self.keyfrom = 'nicomochina' #有道keyfrom  
  12.   
  13.     def get_translation(self,words):  
  14.         url = self.url + '?keyfrom=' + self.keyfrom + '&key='+self.key + '&type=data&doctype=json&version=1.1&q=' + words  
  15.         result = urllib2.urlopen(url).read()
  16.         json_result = json.loads(result)  
  17.         json_result = json_result["translation"]  
  18.         for i in json_result:  
  19.             print i  
  20.   
  21. youdao = Youdao()  
  22. while True:
  23.     msg=raw_input('请输入单词\句子(输入quit结束):')  
  24.     if msg == 'quit':  
  25.         break  
  26.     youdao.get_translation(msg)  
复制代码
感谢小甲鱼大大提供的Python3代码~
  1. import urllib.request
  2. import re  
  3. import json  
  4.   
  5. class Youdao:  
  6.     def __init__(self):  
  7.         self.url = 'http://fanyi.youdao.com/openapi.do'  
  8.         self.key = '695028818' #有道API key  
  9.         self.keyfrom = 'nicomochina' #有道keyfrom  
  10.   
  11.     def get_translation(self,words):  
  12.         url = self.url + '?keyfrom=' + self.keyfrom + '&key='+self.key + '&type=data&doctype=json&version=1.1&q=' + words
  13.         page = urllib.request.urlopen(url)
  14.         result = page.read().decode("utf8")
  15.         json_result = json.loads(result)  
  16.         json_result = json_result["translation"]  
  17.         for i in json_result:  
  18.             print(i)  
  19.   
  20. youdao = Youdao()  
  21. while True:
  22.     msg = input('请输入单词\句子(输入quit结束):')  
  23.     if msg == 'quit':  
  24.         break  
  25.     youdao.get_translation(msg)
复制代码
感谢lizi4355提供的Python2(Tkinter)代码~
  1. #!/usr/bin/env python  
  2. # -*- coding: utf-8 -*-
  3.    
  4. import urllib2  
  5. import re  
  6. import json
  7. import Tkinter as tk



  8.    
  9. class Youdao:  
  10.     def __init__(self):
  11.          
  12.         self.url = 'http://fanyi.youdao.com/openapi.do'  
  13.         self.key = '695028818' #有道API key  
  14.         self.keyfrom = 'nicomochina' #有道keyfrom
  15.         #生成界面
  16.         tk.Label(root, text = '输入').grid(padx = 5, pady = 5)
  17.         tk.Label(root, text = '输出').grid(row = 1,column = 0, padx = 5, pady = 5)
  18.         self.entry_input = tk.Entry(root)
  19.         self.entry_input.grid(row = 0, column = 1, padx = 5, pady = 5)
  20.         self.entry_output = tk.Entry(root)
  21.         self.entry_output.grid(row = 1, column = 1, padx = 5, pady = 5)
  22.         self.btn_tran = tk.Button(root, text = '翻译',command = self.get_translation)
  23.         self.btn_tran.grid(row = 1, column = 2, padx = 5, pady = 5)
  24.          
  25.    
  26.     def get_translation(self):
  27.         words = tk.StringVar()
  28.         words = self.entry_input.get()
  29.         url = self.url + '?keyfrom=' + self.keyfrom + '&key='+self.key + '&type=data&doctype=json&version=1.1&q=' + words  
  30.         result = urllib2.urlopen(url).read()
  31.         json_result = json.loads(result)  
  32.         json_result = json_result["translation"]  
  33.         for i in json_result:
  34.             self.entry_output.insert(tk.END,i)
  35.            # print i  

  36. if __name__ == '__main__':
  37.     root = tk.Tk()
  38.     youdao = Youdao()
  39.     #while True:
  40.     #    msg = raw_input('请输入单词\句子(输入quit结束):')  
  41.      #   if msg == 'quit':  
  42.       #      break  
  43.       #  youdao.get_translation(msg)
  44.     root.mainloop()
复制代码


截图如下~
QQ截图20140502161640.png
QQ截图20140503221744.png



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-2 17:27:01 | 显示全部楼层
。。。。。。。。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 20:45:58 | 显示全部楼层
楼主,你太强大了,好佩服啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 21:57:04 | 显示全部楼层
激动之心,溢于言表。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 22:06:26 | 显示全部楼层
顶介介,嘻嘻!

点评

你真好!~  详情 回复 发表于 2014-5-2 22:24
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 22:16:17 | 显示全部楼层
Let me have a look!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-2 22:24:16 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 22:43:24 | 显示全部楼层
好东西,先谢了!!!!!!!!!!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 22:55:35 | 显示全部楼层
看看具体内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 23:02:27 | 显示全部楼层
把 print i 改为 print(i),把 raw_input() 改为 input()

点评

小甲鱼大大~ 事情不是那么简单哦~ 首先,是urllib2 在Python3中改为了urllib.request了 其次,就是一连串的编码问题~ 小甲鱼大大有兴趣可以试看看哦 :)  详情 回复 发表于 2014-5-2 23:13
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-2 23:13:42 | 显示全部楼层
小甲鱼 发表于 2014-5-2 23:02
把 print i 改为 print(i),把 raw_input() 改为 input()

小甲鱼大大~
事情不是那么简单哦~
首先,是urllib2 在Python3中改为了urllib.request了
其次,就是一连串的编码问题~ {:2_36:}
小甲鱼大大有兴趣可以试看看哦 :)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 23:27:46 | 显示全部楼层
~风介~ 发表于 2014-5-2 23:13
小甲鱼大大~
事情不是那么简单哦~
首先,是urllib2 在Python3中改为了urllib.request了
  1. import urllib.request
  2. import re  
  3. import json  
  4.   
  5. class Youdao:  
  6.     def __init__(self):  
  7.         self.url = 'http://fanyi.youdao.com/openapi.do'  
  8.         self.key = '695028818' #有道API key  
  9.         self.keyfrom = 'nicomochina' #有道keyfrom  
  10.   
  11.     def get_translation(self,words):  
  12.         url = self.url + '?keyfrom=' + self.keyfrom + '&key='+self.key + '&type=data&doctype=json&version=1.1&q=' + words
  13.         page = urllib.request.urlopen(url)
  14.         result = page.read().decode("utf8")
  15.         json_result = json.loads(result)  
  16.         json_result = json_result["translation"]  
  17.         for i in json_result:  
  18.             print(i)  
  19.   
  20. youdao = Youdao()  
  21. while True:
  22.     msg = input('请输入单词\句子(输入quit结束):')  
  23.     if msg == 'quit':  
  24.         break  
  25.     youdao.get_translation(msg)
复制代码

1.png

点评

不愧是小甲鱼大大~ 巨给力啊!  详情 回复 发表于 2014-5-2 23:58

评分

参与人数 2荣誉 +10 鱼币 +15 贡献 +6 收起 理由
vvqboy + 5 + 3 热爱鱼C^_^
~风介~ + 10 + 10 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 23:49:21 | 显示全部楼层
试了一下 挺好用的 感谢分享
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 23:54:34 | 显示全部楼层
看看~~~~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-2 23:58:25 | 显示全部楼层

不愧是小甲鱼大大~
巨给力啊!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-3 21:00:34 | 显示全部楼层
果然很强大!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-3 21:32:49 | 显示全部楼层
加上界面。。。灰常粗糙。
#!/usr/bin/env python  
# -*- coding: utf-8 -*-
  
import urllib2  
import re  
import json
import Tkinter as tk



  
class Youdao:  
    def __init__(self):
        
        self.url = 'http://fanyi.youdao.com/openapi.do'  
        self.key = '695028818' #有道API key  
        self.keyfrom = 'nicomochina' #有道keyfrom
        #生成界面
        tk.Label(root, text = '输入').grid(padx = 5, pady = 5)
        tk.Label(root, text = '输出').grid(row = 1,column = 0, padx = 5, pady = 5)
        self.entry_input = tk.Entry(root)
        self.entry_input.grid(row = 0, column = 1, padx = 5, pady = 5)
        self.entry_output = tk.Entry(root)
        self.entry_output.grid(row = 1, column = 1, padx = 5, pady = 5)
        self.btn_tran = tk.Button(root, text = '翻译',command = self.get_translation)
        self.btn_tran.grid(row = 1, column = 2, padx = 5, pady = 5)
        
  
    def get_translation(self):
        words = tk.StringVar()
        words = self.entry_input.get()
        url = self.url + '?keyfrom=' + self.keyfrom + '&key='+self.key + '&type=data&doctype=json&version=1.1&q=' + words  
        result = urllib2.urlopen(url).read()
        json_result = json.loads(result)  
        json_result = json_result["translation"]  
        for i in json_result:
            self.entry_output.insert(tk.END,i)
           # print i  

if __name__ == '__main__':
    root = tk.Tk()
    youdao = Youdao()
    #while True:
    #    msg = raw_input('请输入单词\句子(输入quit结束):')  
     #   if msg == 'quit':  
      #      break  
      #  youdao.get_translation(msg)
    root.mainloop()

评分

参与人数 1荣誉 +10 鱼币 +10 贡献 +3 收起 理由
~风介~ + 10 + 10 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-4 10:16:27 | 显示全部楼层
很好,很强大,真牛。。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-4 14:31:16 | 显示全部楼层
楼主要不要这么流弊~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-4 22:14:18 | 显示全部楼层
不错不错,支持一个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-16 21:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表