20、自制翻译器

练习介绍

想不想自己动手做个翻译器呢,一点都不难哦~

就用你学过的post和json,一起试试爬取有道翻译自制翻译器吧?(^ω^?)

要求

实现功能:用户输入英文或中文,程序即可打印出来对应的译文。

ps:这个练习不看帮助是完不成了, 1、url去掉_o 2、post数据添加‘typoResult‘: ‘false‘

 1 import requests,json
 2 #调用了两个模块。requests负责上传和下载数据,json负责解析。
 3
 4
 5 word = input(‘你想翻译什么呀?‘)
 6 url=‘http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule‘
 7 #使用post需要一个链接。
 8 data={‘i‘: word,
 9       ‘from‘: ‘AUTO‘,
10       ‘to‘: ‘AUTO‘,
11       ‘smartresult‘: ‘dict‘,
12       ‘client‘: ‘fanyideskweb‘,
13       ‘doctype‘: ‘json‘,
14       ‘version‘: ‘2.1‘,
15       ‘keyfrom‘: ‘fanyi.web‘,
16       ‘action‘: ‘FY_BY_REALTIME‘,
17       ‘typoResult‘: ‘false‘}
18 #将需要post的内容,以字典的形式记录在data内。
19 r = requests.post(url,data)
20 print(r.json())


套层壳(小彩蛋,了解即可,感兴趣的话可以深入学习)

我们总会听到前端后端全栈,感觉神秘有高大上,你一定很好奇它们都是什么呀?

今天呢,我们就简单接触下前端~

有米有很期待呀(?>???<‵)??

前端,是一种GUI软件。而我们现在要用的是Python里的一个模块实现本地窗口的功能。

它就是Tkinter~

Tkinter 模块是 Python 的标准 Tk GUI 工具包的接口。

Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 MacOS系统里。

Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

http://www.runoob.com/python/python-gui-tkinter.html

最后的代码大约是这个模样,注意阅读注释,

当然你可以在终端运行(复制)这些代码,观察效果~

 1 import requests
 2 import json
 3 from tkinter import Tk,Button,Entry,Label,Text,END
 4
 5 class YouDaoFanyi(object):
 6     def __init__(self):
 7         pass
 8     def crawl(self,word):
 9         url=‘http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule‘
10         #使用post需要一个链接
11         data={‘i‘: word,
12               ‘from‘: ‘AUTO‘,
13               ‘to‘: ‘AUTO‘,
14               ‘smartresult‘: ‘dict‘,
15               ‘client‘: ‘fanyideskweb‘,
16               ‘doctype‘: ‘json‘,
17               ‘version‘: ‘2.1‘,
18               ‘keyfrom‘: ‘fanyi.web‘,
19               ‘action‘: ‘FY_BY_REALTIME‘,
20               ‘typoResult‘: ‘false‘}
21         #将需要post的内容,以字典的形式记录在data内。
22         r = requests.post(url, data)
23         #post需要输入两个参数,一个是刚才的链接,一个是data,返回的是一个Response对象
24         answer=json.loads(r.text)
25         #你可以自己尝试print一下r.text的内容,然后再阅读下面的代码。
26         result = answer[‘translateResult‘][0][0][‘tgt‘]
27         return result
28
29 class Application(object):
30     def __init__(self):
31         self.window = Tk()
32         self.fanyi = YouDaoFanyi()
33
34         self.window.title(u‘我的翻译‘)
35         #设置窗口大小和位置
36         self.window.geometry(‘310x370+500+300‘)
37         self.window.minsize(310,370)
38         self.window.maxsize(310,370)
39         #创建一个文本框
40         #self.entry = Entry(self.window)
41         #self.entry.place(x=10,y=10,width=200,height=25)
42         #self.entry.bind("<Key-Return>",self.submit1)
43         self.result_text1 = Text(self.window,background = ‘azure‘)
44         # 喜欢什么背景色就在这里面找哦,但是有色差,得多试试:http://www.science.smith.edu/dftwiki/index.php/Color_Charts_for_TKinter
45         self.result_text1.place(x = 10,y = 5,width = 285,height = 155)
46         self.result_text1.bind("<Key-Return>",self.submit1)
47
48         #创建一个按钮
49         #为按钮添加事件
50         self.submit_btn = Button(self.window,text=u‘翻译‘,command=self.submit)
51         self.submit_btn.place(x=205,y=165,width=35,height=25)
52         self.submit_btn2 = Button(self.window,text=u‘清空‘,command = self.clean)
53         self.submit_btn2.place(x=250,y=165,width=35,height=25)
54
55         #翻译结果标题
56         self.title_label = Label(self.window,text=u‘翻译结果:‘)
57         self.title_label.place(x=10,y=165)
58         #翻译结果
59
60         self.result_text = Text(self.window,background = ‘light cyan‘)
61         self.result_text.place(x = 10,y = 190,width = 285,height = 165)
62         #回车翻译
63     def submit1(self,event):
64         #从输入框获取用户输入的值
65         content = self.result_text1.get(0.0,END).strip().replace("\n"," ")
66         #把这个值传送给服务器进行翻译
67
68         result = self.fanyi.crawl(content)
69         #将结果显示在窗口中的文本框中
70
71         self.result_text.delete(0.0,END)
72         self.result_text.insert(END,result)
73
74         #print(content)
75
76     def submit(self):
77         #从输入框获取用户输入的值
78         content = self.result_text1.get(0.0,END).strip().replace("\n"," ")
79         #把这个值传送给服务器进行翻译
80
81         result = self.fanyi.crawl(content)
82         #将结果显示在窗口中的文本框中
83
84         self.result_text.delete(0.0,END)
85         self.result_text.insert(END,result)
86         print(content)
87     #清空文本域中的内容
88     def clean(self):
89         self.result_text1.delete(0.0,END)
90         self.result_text.delete(0.0,END)
91
92     def run(self):
93         self.window.mainloop()
94
95 if __name__=="__main__":
96     app = Application()
97     app.run()

原文地址:https://www.cnblogs.com/www1707/p/10850566.html

时间: 2024-10-10 06:36:41

20、自制翻译器的相关文章

u近一年很变态个v分

http://ypk.39.net/search/all?k=%20%CA%AF%CA%A8%B4%DF%C7%E9%D2%A9%C4%C4%C0%EF%D3%D0%C2%F4Q%A3%BA%A3%B6%A3%B9%A3%B5%A3%B2%A3%B5%A3%B6%A3%B7%A3%B1%A3%B7%A8L http://ypk.39.net/search/all?k=%A1%FD%CF%C9%D3%CE%B4%DF%C7%E9%D2%A9%C4%C4%C0%EF%D3%D0%C2%F4Q%A3%

20天自制操作系统(三)

我们看\projects\03_day\harib00j中的文件 ipl10.nas: 相当于一个boot源文件,它使用int 0x13 ah=0x2加载某些扇区的文件(loader+kernel)到内存0x从c200中 asmhead.nas:相当于一个loader源文件,作用是 1.设置VGA为320x200x8bit,并把这些参数保存起来 MOV AL,0x13 ; VGA 320x200x8bit MOV AH,0x00 INT 0x10 MOV BYTE [VMODE],8 MOV W

20天自制操作系统(八)

移动鼠标并显示鼠标坐标 struct MOUSE_DEC { unsigned char buf[3], phase; int x, y, btn; }; enable_mouse(&mdec); for (;;) { io_cli(); //无数据则等待 if (fifo8_status(&keyfifo) + fifo8_status(&mousefifo) == 0) { io_stihlt(); } else { if (fifo8_status(&keyfifo)

20天自制操作系统(一)

为什么博文分类以及博文名字叫"20天自制操作系统"呢? 因为6月11日到7月还有接近20天的时间,所以我取整,接近20天内学完. <30天自制操作系统> 作者  川合秀实   译者  周自恒,李黎明,曾箱江,张文旭 这本书. PS:从5月20号到6月10日,除了上班之外,下班就是吃喝玩,浪费了特别多的时间.看到BIT祝威日进千里,我深感惭愧.所以我决定"改邪归正". 好了,开始. 首先罗列出工具: ----------------------------

20天自制操作系统(四)

D:\30day\projects\04_day\harib01b下代码如何编译运行. 把z_tools复制到04_day下,然后修改Makefile文件的run: run : $(MAKE) img $(COPY) haribote.img ..\..\qemu\a.img $(MAKE) -C ../../qemu/ make run 结果: 颜色为0-f,0-f...如此循环. 这是使用了默认调色板的颜色,如果我们想自己设置0-f号颜色怎么办呢? 那需要自己设置调色板: void init

Garmin eTrex 20/30 自制地图(KMZ)的限制

参考 http://garminbasecamp.wikispaces.com/Custom+Maps 自制地图是KMZ文件,其中打包了jpg图片作为地图显示.限制: More than one JPEG can preside in a KMZ file. The only KML file that will be processed is the doc.kml, inside the KMZ file. Jpegs files are the only supported image t

自制linux小系统

自制linux 今天说一说怎么自制一个linux,也就是用一块新硬盘来自己搞一个linux.硬盘拆掉撞到其他机器上可以照常使用,需要什么东西都是自己添加的哦. 那我就在虚拟机里进行了嘿嘿嘿... 1.在我的centos里加了一块新的硬盘并顺便分了个区,并且格式化了一下. [[email protected] ~]# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recom mended to   

《30天自制操作系统》读书笔记(2)hello, world

让系统跑起来 要写一个操作系统,我们首先要有一个储存系统的介质,原版书似乎是06年出版的,可惜那时候没有电脑,没想到作者用的还是软盘,现在的电脑谁有软驱?不得已我使用一张128M的SD卡来代替,而事实上你用的是U盘还是软盘对我们的操作系统没有影响,缺点是你的U盘刷入系统后容量只能是1440 MB,即当年流行的3.5英寸软盘的大小,当然不用担心,再格式化一次(用DiskGeniu),就可以恢复. 我做事情的话,总是怕自己的努力的结果白费了,害怕辛辛苦苦看完这本书但是发现做出来的东西现在根本没法用,

解析Tensorflow官方English-Franch翻译器demo

今天我们来解析下Tensorflow的Seq2Seq的demo.继上篇博客的PTM模型之后,Tensorflow官方也开放了名为translate的demo,这个demo对比之前的PTM要大了很多(首先,空间上就会需要大约20个G,另外差点把我的硬盘给运行死),但是也实用了很多.模型采用了encoder-decoder的框架结果,佐以attention机制来实现论文中的英语法语翻译功能.同时,模型的基础却来自之前的PTM模型.下面,让我们来一起来了解一下这个神奇的系统吧! 论文介绍及基础描写: