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


Posted in Python onApril 14, 2019

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

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

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

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

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

提升办公效率的法宝

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

如上图所示,运行程序并保持后台运行,在电脑上的任何一个软件中选择一段文本,并 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

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

def translate(tk, content): 
 if len(content) > 4891: 
  print("too long to translate")
   return 
 param = {'tk': tk, 'q': content} 
 result = requests.get("""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""", params=param) 
data = result.json()
 print(data[0][0][0])

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

Python 操作系统剪贴板

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

def getText():#读取剪切板
  # 打开剪贴板
  w.OpenClipboard()
 # 读取剪贴板的内容 
 d = w.GetClipboardData(win32con.CF_TEXT)
  # 关闭剪贴板
  w.CloseClipboard()
 try:  
return d.decode('utf-8')
 except:  
 return d.decode('gbk')

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

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

def setText(aString):#写入剪切板
 # 打开剪贴板
 w.OpenClipboard()
 # 清空剪贴板
 w.EmptyClipboard()
 # 写入剪贴板
 w.SetClipboardText(aString)
 # 关闭剪贴板
 w.CloseClipboard()

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

while(True):
   # 如果剪贴板正在被占用 
  try:
   cs = getText() 
  except: 
   time.sleep(1)
    cs = getText() 
  print('cs',cs) 
  if cs and cs != ls:
   print('准备翻译')
   content = getText()  
 tk = js.getTk(content)
   res = translate(tk, content)14   setText(res)
   time.sleep(1)
   ls = res

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

总结

以上所述是小编给大家介绍的Python 实现一个自动化翻译和替换的工具,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家!

Python 相关文章推荐
简单谈谈Python中函数的可变参数
Sep 02 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 Python
Python多继承顺序实例分析
May 26 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
python 在某.py文件中调用其他.py内的函数的方法
Jun 25 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
如何利用python实现Simhash算法
Jun 28 Python
提升Python程序性能的7个习惯
Apr 14 #Python
Python根据当前日期取去年同星期日期
Apr 14 #Python
Python实现的微信支付方式总结【三种方式】
Apr 13 #Python
Python实现合并excel表格的方法分析
Apr 13 #Python
Python Image模块基本图像处理操作小结
Apr 13 #Python
python使用pymongo操作mongo的完整步骤
Apr 13 #Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 #Python
You might like
留言板翻页的实现详解
2006/10/09 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
python复制文件代码实现
2013/12/23 Python
Python实现批量压缩图片
2018/01/25 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
Python模块的制作方法实例分析
2019/12/21 Python
python字典与json转换的方法总结
2020/12/28 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
大学生应聘推荐信范文
2013/11/19 职场文书
物流司机岗位职责
2013/12/28 职场文书
员工拾金不昧表扬信
2014/01/09 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript