首页 > 编程语言 >浅析Python 实现一个自动化翻译和替换的工具

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

时间:2022-12-30 10:06:08浏览次数:59  
标签:翻译 Python 剪贴板 替换 content tk dt translate 浅析


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

大家好 我是毕加锁 (锁!)

这篇文章主要介绍了Python 实现一个自动化翻译和替换的工具,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

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

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

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

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

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

提升办公效率的法宝

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

如上图所示,运行程序并保持后台运行,在电脑上的任何一个软件中选择一段文本,并 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,剪贴板,替换,content,tk,dt,translate,浅析
From: https://blog.51cto.com/u_15687734/5979095

相关文章

  • Python处理复杂的CSV文件
    目录​​大家好我是毕加索锁(锁!)今天教大家利用Python处理复杂的CSV文件​​​​项目简介​​​​项目笔记与心得​​​​总结​​ 大家好我是毕加索锁(锁!)今天教大家......
  • 利用Python制作本地Excel的查询与生成的程序
    目录​​前言​​​​需求​​​​实验步骤​​​​Excel预览图片​​​​查询​​​​追加查询结果到Excel​​​​完整代码​​前言大家好我是毕加锁(锁!)今天教大家利......
  • 锦囊秘籍!用Python操作MySQL的使用教程集锦!
    一.python操作数据库介绍大家好,我是毕加锁(锁!)。Python标准数据库接口为PythonDB-API,PythonDB-API为开发人员提供了数据库应用编程接口。Python数据库接口支持非常多的......
  • Python实现房产数据分析与可视化 数据分析 实战
    Python库的选择话说,工欲善其事,必先利其器,虽然我们已经选择Python来完成剩余的工作,但是我们需要考虑具体选择使用Pytho的哪些利器来帮助我们更快更好地完成剩余的工作。我们......
  • 11个案例讲透 Python 函数参数
    今天给大家分享一下自己整理的一篇Python参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上80%的文章讲的都要明白,如果你是入门不久的python新手,相......
  • 运用Python分析公募基金【量化投资】
    运用Python分析公募基金1、背景学校财富管理课程的期末论文是分析中国各种投资标的的收益,笔者分配到的研究的细分类别为:通过大集合转公募基金的方式,成立的公募基金的收益分......
  • Python处理Excel比Vba快100倍,媳妇连连夸赞今晚不用再跪搓衣板----python实战
    最近经历了一次把vb脚本改造成python脚本,并获得性能提升数倍的过程,当然,这个过程也不是一帆风顺,中间也经历了一些波折,但是,也收获了一波新的认知。正好最近有时间,姑且写下来记......
  • Python办公自动化|批量生成请假条
    大家好,我是毕加锁本文就将基于一个真实的办公案例进行讲解如何提取Excel内容并创建Word,主要将涉及以下三个知识点​​openpyxl​​ 读取Excel文件​​python-docx​​ ......
  • 利用Python制作第一人称射击小游戏 含源代码
    大家好我是毕加锁(锁!)今天教大家利用Python制作第一人称小游戏 涉及知识点1.sprites2.pygame混音器3.图章  4.python基础语法.代码1发射声fromspritesimport*......
  • Python天气播报系统
    工具​python3.7pycharmpyttsx3:语音播报库天气数据来源​找寻一个天气网站比如说我们要查询某地的天气,在输入地名后就能看到结果。我们可以看到网站的url会有变化:每......