Python实现一个自动化翻译和替换的工具

时间:2022-10-09 17:42:17 | 浏览:2159

作者 | 月小水长出处 | 月小水长公众号一个可能你似曾相识的场景阅读内容包含大量英文的 PPT、Word、Excel 或者记事本时,由于英语不熟悉,为了流利地阅读,需要打开浏览器进入谷歌翻译的主界面,然后把英文复制到谷歌翻译的输入框中,最

作者 | 月小水长

出处 | 月小水长公众号

一个可能你似曾相识的场景

阅读内容包含大量英文的 PPT、Word、Excel 或者记事本时,由于英语不熟悉,为了流利地阅读,需要打开浏览器进入谷歌翻译的主界面,然后把英文复制到谷歌翻译的输入框中,最后又把翻译结果复制回 PPT、Word 和 Excel。

要是一个两个单词还好,要是发现有 100 个单词不认识,就必须复制粘贴 200 次,如此机械性重复性的工作,应该交给程序来做,这就是我设计下面这个自动化翻译工具的初衷。

提升办公效率的法宝

如上图所示,运行程序并保持后台运行,在电脑上的任何一个软件中选择一段文本,并 Ctrl + C 复制到系统剪贴板中,程序就会自动帮助我们完成翻译,并将翻译结果自动复制到系统剪贴版中,只需 Ctrl + V,就完成了翻译结果对原文的替换。

编码实现

程序主要分为两部分,第一部分为谷歌翻译爬虫,第二部分就是实现这个将翻译结果自动替换的业务逻辑。

谷歌翻译爬虫

通过浏览器 F12 开发者工具,很容易定位到翻译请求的
URL:http://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss &dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2

这个请求接受两个参数,一个就是我们要翻译的字符串 q,另一个是用于用户认证的 tk(token),其中 q 很容易构造,tk 的构造就需要花费一番心力了,需要我们调试 js 代码,这里参考 Github 上大神的轮子:
https://github.com/cocoa520/Google_TK

谷歌翻译爬虫的主要代码如下:

 1def translate(tk, content):
2 if len(content) > 4891:
3 print("too long to translate")
4 return
5
6 param = {"tk": tk, "q": content}
7
8 result = requests.get("""http://translate.google.cn/translate_a/single?client=t&sl=en
9 &tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss
10 &dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2""", params=param)
11
12 data = result.json
13 print(data[0][0][0])

返回结果是 json 形式的,翻译结果保存在结果的第一个元组中。

Python 操作系统剪贴板

将读取剪贴板的内容的代码封装成函数如下:

 1def getText:#读取剪切板
2 # 打开剪贴板
3 w.OpenClipboard
4 # 读取剪贴板的内容
5 d = w.GetClipboardData(win32con.CF_TEXT)
6 # 关闭剪贴板
7 w.CloseClipboard
8 try:
9 return d.decode("utf-8")
10 except:
11 return d.decode("gbk")

返回值 d 是字节类型的,需要解码,中文按 gbk 格式解码,英文按 utf-8 解码。

类似地,写入剪贴板的代码如下:

1def setText(aString):#写入剪切板
2 # 打开剪贴板
3 w.OpenClipboard
4 # 清空剪贴板
5 w.EmptyClipboard
6 # 写入剪贴板
7 w.SetClipboardText(aString)
8 # 关闭剪贴板
9 w.CloseClipboard

实现将翻译结果自动替换原文的逻辑的代码如下:

 1while(True):
2 # 如果剪贴板正在被占用
3 try:
4 cs = getText
5 except:
6 time.sleep(1)
7 cs = getText
8 print("cs",cs)
9 if cs and cs != ls:
10 print("准备翻译")
11 content = getText
12 tk = js.getTk(content)
13 res = translate(tk, content)
14 setText(res)
15 time.sleep(1)
16 ls = res

值得注意的是,系统剪贴板对象是单例模式的,在操作系统范围内只有一个,而且读写剪贴板都是互斥的,在读(写)剪贴板的同时不允许任何对剪贴板的写(读)操作。试想这样一种情景,我们在其他软件中 Ctrl + C 写入剪贴板,而此时我们的程序代码正好执行到读剪贴板那一行,毫无疑问会报错,我的解决办法是使用 try…except 语句延时 1 s再读取,这样可以大大降低读写碰撞的概率,但无疑消耗了程序性能。

最好的办法是判断剪贴板对象句柄是否被占用,其实我一直在寻找是否存在判断剪贴板对象句柄是否被占用的 API,但是一直没有找到,如果有人知道的话,欢迎评论区留言。

本文为作者授权发布,如需转载请联系原作者。

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「pybooks02」,立即获取 O"Reilly 出版社推出的免费 Python 相关电子书合集

回复关键词「书单02」,立即获取主页君整理的 10 本 Python 入门书的电子版

印度小伙写了套深度学习教程,Github上星标已经5000+

上百个数据文件合并,只能手动复制粘贴?教你一招十秒搞定!

一个提升图像识别准确率的精妙技巧

一文读懂:从 Python 打包到 CLI 工具

如何使用 Python 进行时间序列预测?

美亚Kindle排名第一的Python 3入门书,火遍了整个编程圈

十分钟搭建私有 Jupyter Notebook 服务器

使用 Python 制作属于自己的 PDF 电子书

12步轻松搞定Python装饰器

200 行代码实现 2048 游戏

相关资讯

为什么国内很多人都在说Python好,真正招聘的时候不需要呢?

Python是一门很出色的胶水语言,也就是当我们有现成的组件后,Python非常适合将他们组装起来。机器学习的例子就比较典型。我们用C++写好Tensorflow,用C写好Numpy,用Scala写好Spark,现在想用这些组件训练一个机器

图解Python算法

普通程序员,不学算法,也可以成为大神吗?对不起,这个,绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗?就一直当普通程序员吗?如果有一本算法书,看着很轻松……又有代码示例……又有讲解……怎么会有那样的书呢?哎呀,最好学了算法

如何系统的学python?

我不喜欢一上来就推荐一堆参考资料的东西,那只会让初学者更迷茫。好比一个婴儿,你告诉他学会走路的方法有100种,他只会变的对走路毫无兴趣,他要的只是一种最有效的学会走路的办法,而不是100种。同样的,下面介绍的是我之前刚开始自己学习pytho

Python基础知识

Python学习第一天,首先安装python环境和编程软件PyCharm,安装好之后就可以开始手敲代码啦!安装python环境和编程软件比较简单,这里就不展开了,大家可以自行搜索度娘哦.......下面的代码是在PyCharm中进行的,每一

Python有哪些好用的语言翻译方法

现在将几万条数据从日语翻译成中文。因为数据的获取和处理用的是python代码,所以想先尝试翻译部分也用python实现。网上查到的翻译方法有百度、有道以及谷歌翻译(个人)下面会对这三个方法进行简单的测试和分析。模块导入手动安装,命令pip

python10款好用的编译器和解释器

Python 是一门对初学者友好的编程语言,是一种多用途的、解释性的和面向对象的高级语言。它拥有非常小的程序集,非常易于学习、阅读和维护。其解释器可在Windows、Linux 和 Mac OS 等多种操作系统上使用。它的可移植性和可伸缩性

python学习笔记000

写在最前面其实想学习编程很久了,以前也陆陆续续学习过一段时间的编程,但总是半途而废,经过我长达三秒钟的思考,总结出以下两个方面的原因:1、没有学习的压力。因为我不是程序员,编程不是我吃饭的家伙,会不会编程并不会影响什么,但我又觉得编程是一件

目前哪款iPhone手机值得入手?看完不纠结了

还有人在问,想买苹果手机推荐哪款好,越贵得越好,仔细想想,是不是这个道理,不过大家之所以纠结,主要还是受到了资金预算限制,下面根据不同的预算范围,我来推荐几款苹果手机。一、预算2500元以内iPhoneXR如果你能忍受屏幕粗大的黑边,iPh

友情链接

SEO域名抢注宝宝起名网妈妈知道币圈数字藏品系统开发调酒师培训网郑州新闻资讯网番荔枝资讯网纳思达A股地铁出行网王森西点学习网海尔空调资讯网七夕情人节蛋糕西点培训教学网周星驰影迷网杨幂影迷网兼职悬赏猫远望谷股票行情网中国式离婚
python编程教学网-python数据库开发教程、python基础知识入门、python数据库编程入门、python语法基础、python下载安装教程、python下载手机版、python翻译器下载手机版、python翻译器代码、python语言翻译、python基础代码、python编程自学网。
python编程教学网 dadeji.cn ©2022-2028版权所有