python语言翻译中文(浅析Python 实现一个自动化翻译和替换的工具)
python语言翻译中文
浅析Python 实现一个自动化翻译和替换的工具一个可能你似曾相识的场景
阅读内容包含大量英文的 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
谷歌翻译爬虫的主要代码如下:
|
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 实现一个自动化翻译和替换的工具,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家!
原文链接:https://www.jianshu.com/p/5d98fd17ef9f
- python一组数字求和(Python3数字求和的实例)
- python3和python2 兼容(Python2和Python3的共存和切换使用)
- python做出来的游戏按什么键运行(python pygame实现方向键控制小球)
- python中jieba库怎么用(详解Python数据可视化编程 - 词云生成并保存jieba+WordCloud)
- python udp通信(Python socket模块实现的udp通信功能示例)
- pythonssh登录服务器(对python 通过ssh访问数据库的实例详解)
- python3常用内建函数(Python3中函数参数传递方式实例详解)
- python获取字符串类型(python3利用ctypes传入一个字符串类型的列表方法)
- python核心编程和python基础教程(从0开始的Python学习014面向对象编程推荐)
- python创建列表并查询(python列表使用实现名字管理系统)
- python中if条件语句如何使用(Python中如何使用if语句处理列表实例代码)
- python中的pass是干嘛的(总结python中pass的作用)
- pythonhttp文件服务器(使用Python创建简单的HTTP服务器的方法步骤)
- python停止执行的代码(python定时检测无响应进程并重启的实例代码)
- python中的insert(python assert的用处示例详解)
- 在python中各个符号含义的汇总(详解Python中is和==的区别)
- 天热没胃口 这道菜开胃又下饭,2个小技巧新手一学就会(这道菜开胃又下饭)
- 指天椒紫苏爆炒牛肉(指天椒紫苏爆炒牛肉)
- 谷雨前,吃牛羊肉别忘了吃河鲜,除湿还清热,加紫苏一炒特解馋(吃牛羊肉别忘了吃河鲜)
- 紫苏牛肉锅里滚一滚,香的鼻子都要掉了(紫苏牛肉锅里滚一滚)
- 每天都吃水果的好处(每天吃水果的好处与功效)
- 苹果15价格(苹果15价格512g官网)
热门推荐
- python爬虫怎么爬取vip资源(Python网络爬虫之爬取微博热搜)
- kubernetes exec使用的接口(kubernetes YAML文件的使用)
- js基础入门运算符(js 可选链操作符的使用)
- vuejs filter过滤器的使用(Vue过滤器filter实现及应用场景详解)
- centos如何安装mysql8.0版本(Centos7下安装MySQL8.0.23的步骤小白入门级别)
- django测试服务器静态资源放哪里(Django使用redis缓存服务器的实现代码示例)
- dedecms文章权重排序(Dedecms实现tags云标签随机颜色与字体大小方法详解)
- 如何处理textarea换行
- python实例之pyqt5多窗口实现(python+pyqt5编写md5生成器)
- vue双向数据绑定js如何实现(纯JS如何实现vue.js下的双向绑定功能)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9