三大Python翻译神器再也不用担心学不好英语
作者:顾木子吖 发布时间:2022-02-13 07:27:19
标签:Python,翻译,英语
导语
hello everyone! I'm kimiko!
Miss me???
嘿!中秋结束了,开始正式营业给大家继续送福利啦!
中秋在家发现:家里的小孩子在最后上学那天开始赶作业了!果然每个孩子的童年都是一样的!哈哈哈啊~
看了一眼侄女儿正在写英语翻译题目, 啊这一看不得了题目写的乱七八糟!!!
这让我有点儿上头啊,刚巧直接给我姐说了:‘'‘这英语还要加强学习撒'
老姐说:‘'回家我也不会教不了,学校的也没学好,一句完整的句子都讲不出来.......‘“
那肯定是拿上我30米的鼠标键盘,开始敲代码!这款中英文翻译神器,小孩子学习英文很轻松啊~回家就给我侄女儿装上电脑了!
你是不是也经常遇到这些问题:往下看!!今天教大家写一款三大翻译神器,你值得拥有!
环境安装:python3.6、pycharm2021,以及自带的模块。
pip install -i https://pypi.douban.com/simple/ requests
pip install -i https://pypi.douban.com/simple/ pyqt5
简单的界面可优化哈:
class Translator(QWidget):
def __init__(self, parent=None, **kwargs):
super(Translator, self).__init__(parent)
self.setWindowTitle('三大翻译软件')
self.setWindowIcon(QIcon('data/icon.jpg'))
self.Label1 = QLabel('原文')
self.Label2 = QLabel('译文')
self.LineEdit1 = QLineEdit()
self.LineEdit2 = QLineEdit()
self.translateButton1 = QPushButton()
self.translateButton2 = QPushButton()
self.translateButton3 = QPushButton()
self.translateButton1.setText('百度翻译')
self.translateButton2.setText('有道翻译')
self.translateButton3.setText('谷歌翻译')
self.grid = QGridLayout()
self.grid.setSpacing(12)
self.grid.addWidget(self.Label1, 1, 0)
self.grid.addWidget(self.LineEdit1, 1, 1)
self.grid.addWidget(self.Label2, 2, 0)
self.grid.addWidget(self.LineEdit2, 2, 1)
self.grid.addWidget(self.translateButton1, 1, 2)
self.grid.addWidget(self.translateButton2, 2, 2)
self.grid.addWidget(self.translateButton3, 3, 2)
self.setLayout(self.grid)
self.resize(400, 150)
self.translateButton1.clicked.connect(lambda : self.translate(api='baidu'))
self.translateButton2.clicked.connect(lambda : self.translate(api='youdao'))
self.translateButton3.clicked.connect(lambda : self.translate(api='google'))
self.bd_translate = baidu()
self.yd_translate = youdao()
self.gg_translate = google()
def translate(self, api='baidu'):
word = self.LineEdit1.text()
if not word:
return
if api == 'baidu':
results = self.bd_translate.translate(word)
elif api == 'youdao':
results = self.yd_translate.translate(word)
elif api == 'google':
results = self.gg_translate.translate(word)
else:
raise RuntimeError('Api should be <baidu> or <youdao> or <google>...')
self.LineEdit2.setText(';'.join(results))
三大翻译之一:百度翻译类。
class baidu():
def __init__(self):
self.session = requests.Session()
self.session.cookies.set('BAIDUID', '19288887A223954909730262637D1DEB:FG=1;')
self.session.cookies.set('PSTM', '%d;' % int(time.time()))
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
}
self.data = {
'from': '',
'to': '',
'query': '',
'transtype': 'translang',
'simple_means_flag': '3',
'sign': '',
'token': '',
'domain': 'common'
}
self.url = 'https://fanyi.baidu.com/v2transapi'
self.langdetect_url = 'https://fanyi.baidu.com/langdetect'
def translate(self, word):
self.data['from'] = self.detectLanguage(word)
self.data['to'] = 'en' if self.data['from'] == 'zh' else 'zh'
self.data['query'] = word
self.data['token'], gtk = self.getTokenGtk()
self.data['token'] = '6482f137ca44f07742b2677f5ffd39e1'
self.data['sign'] = self.getSign(gtk, word)
res = self.session.post(self.url, data=self.data)
return [res.json()['trans_result']['data'][0]['result'][0][1]]
def getTokenGtk(self):
url = 'https://fanyi.baidu.com/'
res = requests.get(url, headers=self.headers)
token = re.findall(r"token: '(.*?)'", res.text)[0]
gtk = re.findall(r";window.gtk = ('.*?');", res.text)[0]
return token, gtk
def getSign(self, gtk, word):
evaljs = js2py.EvalJs()
js_code = js.bd_js_code
js_code = js_code.replace('null !== i ? i : (i = window[l] || "") || ""', gtk)
evaljs.execute(js_code)
sign = evaljs.e(word)
return sign
def detectLanguage(self, word):
data = {
'query': word
}
res = self.session.post(self.langdetect_url, headers=self.headers, data=data)
return res.json()['lan']
三大翻译之二:有道翻译类。
class youdao():
def __init__(self):
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
'Referer': 'http://fanyi.youdao.com/',
'Cookie': 'OUTFOX_SEARCH_USER_ID=-481680322@10.169.0.83;'
}
self.data = {
'i': None,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': None,
'sign': None,
'ts': None,
'bv': None,
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTlME'
}
self.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
def translate(self, word):
ts = str(int(time.time()*10000))
salt = ts + str(int(random.random()*10))
sign = 'fanyideskweb' + word + salt + '97_3(jkMYg@T[KZQmqjTK'
sign = hashlib.md5(sign.encode('utf-8')).hexdigest()
bv = '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
bv = hashlib.md5(bv.encode('utf-8')).hexdigest()
self.data['i'] = word
self.data['salt'] = salt
self.data['sign'] = sign
self.data['ts'] = ts
self.data['bv'] = bv
res = requests.post(self.url, headers=self.headers, data=self.data)
return [res.json()['translateResult'][0][0].get('tgt')]
三大翻译之三:Google翻译类。
class google():
def __init__(self):
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
}
self.url = 'https://translate.google.cn/translate_a/single?client=t&sl=auto&tl={}&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&tk={}&q={}'
def translate(self, word):
if len(word) > 4891:
raise RuntimeError('The length of word should be less than 4891...')
languages = ['zh-CN', 'en']
if not self.isChinese(word):
target_language = languages[0]
else:
target_language = languages[1]
res = requests.get(self.url.format(target_language, self.getTk(word), word), headers=self.headers)
return [res.json()[0][0][0]]
def getTk(self, word):
evaljs = js2py.EvalJs()
js_code = js.gg_js_code
evaljs.execute(js_code)
tk = evaljs.TL(word)
return tk
def isChinese(self, word):
for w in word:
if '\u4e00' <= w <= '\u9fa5':
return True
return False
效果如下:中英文各一句哈!
总结
每天进步一点点!记得“三连哦~爱你”,坚持学习!!!
来源:https://blog.csdn.net/weixin_55822277/article/details/120411770
0
投稿
猜你喜欢
- 一个很棒的 blog 文章,是 PPK 两年前写的,文章中解释了 contains() 和 compareDocumentPosition(
- 主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域。它
- 本文实例讲述了Python设计模式之命令模式原理与用法。分享给大家供大家参考,具体如下:命令模式(Command Pattern):将请求封
- 先看代码m = nn.Identity(54, unused_argument1=0.1, unused_argument2=False)i
- 女朋友是一个软件测试人员,在工作中经常会遇到需要录屏记录自己操作,方便后续开发同学定位。因为录屏软件动不动就开始收费,所以她经常更换录屏软件
- 相比大家都听过自动化生产线、自动化办公等词汇,在没有人工干预的情况下,机器可以自己完成各项任务,这大大提升了工作效率。编程世界里有各种各样的
- 我一直很难理解Javascript语言的继承机制。它没有"子类"和"父类"的概念,也没有"
- sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始,以下两个例子说明:1、使用sys.
- 1、创建存储过程 create or replace procedure test(var_name_1 in type,var_name_
- 编码规范Python 编码规范重要性的原因用一句话来概括就是:统一的编码规范可以提高开发效率。无论你是 编程者,还是 阅读者,好的规范能让你
- 前言为了简化并更好地标识异步IO,从Python 3.5开始引入了新的语法async和await,可以让coroutine的代码更简洁易读。
- 1、有一个论坛,帖子的数据巨大,请简要说明如何提高用户搜索帖子的效率。 在程序方面,可以使用页面缓存技术。在前台界面着设计方面也可以让用户输
- VuePressvuepress是尤大大4月12日发布的一个全新的基于vue的静态网站生成器,实际上就是一个vue的spa应用,内置webp
- 一、常见模型分类1.1、循环服务器模型循环接收客户端请求,处理请求。同一时刻只能处理一个请求,处理完毕后再处理下一个。优点:实现简单,占用资
- 打开VB6,新建ActiveX DLL 2、在工程引用中加入Microsoft Active Server Pages Object Lib
- 下面是十个Python中很有用的贴士和技巧。其中一些是初学这门语言常常会犯的错误。注意:假设我们都用的是Python 31. 列表推导式你有
- 1,下载Yii,站点:http://www.yiiframework.com/download/注意版本,这里是根据Yii1来的,如果是Yi
- 如下所示:import timedef date_compare(item1, item2): t1 = time.mktime(time.
- 说到运维报警,我觉得都可以写个长篇历史来详细解释了报警的前世来生,比如最早报警都是用邮件,但邮件实时性不高,比如下班回家总不能人一直盯着邮箱
- 前言本篇文章分享一下我在实际开发小程序时遇到的需要获取用户当前位置的问题,在小程序开发过程中经常使用到的获取定位功能。uniapp官方也提供