美文网首页
活学活用Python01:谷歌翻译小助手

活学活用Python01:谷歌翻译小助手

作者: 三思而后学 | 来源:发表于2017-03-13 13:19 被阅读0次

[TOC]

写这篇文章的缘由

由于学业需要,我每天都药花大量的时间看论文,而且都是英文论文。作为一个工作了几年再读博的老博士,英语已经忘得差不多了。碰到一些难以理解的段落,就需要借助于谷歌翻译等在线的翻译工具。因此,我最经常做的事情就是:在PDF阅读器中复制一段话,再到谷歌翻译的网页中粘贴,看看自己有没有理解错误。比如这样:


我们看到,出现了两个问题:

  1. 因为换行符造成句子中断,影响了谷歌翻译的准确性。
  2. 每次都要切换到谷歌翻译的网页,手动粘贴进去,也很麻烦。

这两周一直在看申龙斌的python教程,有一天就突然想要自己动手写个python小程序,来解决我上面碰到的两个问题了。

任务分解

我要写的程序要能够解决上面的两个问题,因此要实现以下功能:

  1. 能够替换掉PDF文件段落复制时产生的换行符,替换成空格。
  2. 能够自动打开网页并把翻译结果显示出来。

我们看着两个功能还是太笼统了,仿照申龙斌博客中的思路,按照《如何解题》里面说的,要先把问题分解。1.读取剪贴板,把剪贴板的内容保存成一个字符串2.替换剪贴板里面的换行符为空格3.直接打开替换后的文本的谷歌翻译页面

解决过程

1.读取剪贴板

首先百度以下python读取剪贴板:


比较了一下,发现第二个链接非常的容易懂。使用了一个包叫pyperclip,这个包里面有两个函数copy()paste(),可以在本文的程序中使用。方法如下:

import pyperclip
pyperclip.copy('Hello world.')
print(pyperclip.paste())

就会输出:Hello world.
上面的两行代码就能够读取剪贴板的内容并打印出来了

2.替换换行符

测试了一下,在PDF文件中复制以后,直接使用pyperclip.paste()得到的就是文本,类型是Unicode,查了一下,应该是字符串的一种,可以直接使用python中的字符串的方法。而字符串方法中有一个函数就是replace(‘需要替换的字符’,“想要换成的字符”)
测试一下:

import pyperclip
copyedText= pyperclip.paste()normalizedText = copyedText.replace('\n', ' ')

发现没有反应,于是想到有些换行可能不是\n,也有可能是\r,于是就这样反复尝试,最后发现PDF换行换行很复杂,是\r\n,后来又发现一些小的bug,进行了修改,最终形成的函数是:

normalizedText = copyedText.replace('\r','\\r').replace('\n','\\n').replace('-\\r\\n','').replace("\\r\\n"," ")

至此,已经能够的到正常的文本了

3.直接打开替换后的文本的谷歌翻译页面

Python里面打开网页的函数是webbrowser.open(url)
查看一下刚才的文字翻译的网页的地址:http://translate.google.cn/#en/zh-CN/Abstract%E2%80%94Performing%20predictive%20modelling%2C%20such%20as%20anomaly%0Adetection%2C%20in%20Big%20Data%20is%20a%20difficult%20task.%20This%20problem%20is%0Acompounded%20as%20more%20and%20more%20sources%20of%20Big%20Data%20are%20generated%0Afrom%20environmental%20sensors%2C%20logging%20applications%2C%20and%0Athe%20Internet%20of%20Things.%20Further%2C%20most%20current%20techniques%20for%0Aanomaly%20detection%20only%20consider%20the%20content%20of%20the%20data%20source
可以看出这个地址的结构是这样的:
http://translate.google.cn/#en/zh-CN/sentenceToBeTranslated
那么我们要打开的页面地址就是:
http://translate.google.cn/#en/zh-CN/text_norm
用字符串的方式写就是
url= 'http://translate.google.cn/#en/zh-CN/'+text_norm
然后调用webbrowser来打开新的页面
webbrowser.open(url)

4.设置监听和查重

要让我们的程序不停的监听剪贴板,那么就需要设置一个循环,我这里根据我自己的习惯,设置了每10秒运行一次。

import time
while True:
    time.sleep(10)
    【上述功能代码】

监听设置以后发现不管你有没有复制新的东西,都会每10秒打开一个新页面,这很不爽,因此加上一个查重:设置一个缓冲,把已经得到的文本存放在copyBuff中,如果新的文本来了就和copyBuff对比一下, 不同就翻译,相同就忽略。

while True:
    time.sleep(10)
    copyedText=pyperclip.paste()
    if copyBuff != copyedText:
        copyBuff=copyedText
      【上述功能代码】

最终的代码如下:

import pyperclip
import time
import webbrowser
copyBuff=' '
while True:
    time.sleep(10)
    copyedText=pyperclip.paste()
    if copyBuff!=copyedText:
        copyBuff=copyedText
        normalizedText=copyBuff.replace('\r','\\r').replace('\n','\\n').replace('-\\r\\n','').replace("\\r\\n"," ")
        url='http://translate.google.cn/#en/zh-CN/'+normalizedText
        webbrowser.open(url)
    else:
        print('no change')
5.测试一下

打开python程序,从PDF中复制一段文字,稍等片刻,成功了!感谢CCTV……


总结:

  • 复杂问题先分解
  • pyperclip
  • str.replace()函数
  • time.sleep(seconds)
  • webbrowser.open(url)

相关文章

  • 活学活用Python01:谷歌翻译小助手

    [TOC] 写这篇文章的缘由 由于学业需要,我每天都药花大量的时间看论文,而且都是英文论文。作为一个工作了几年再读...

  • l'étude du Francais

    Quick access for myself 谷歌翻译法语助手Journal en français facil...

  • 刚刚装好win10系统需要做什么?

    一、输入法浏览器 推荐:Chrome、火狐、搜狗输入法 谷歌插件:谷歌上网助手(翻墙)、划词翻译、恢复关闭、油猴、...

  • 英语论文怎么写

    专业名词不会啊!用谷歌翻译吗?不,有语料库是最好的。反键轨道 的翻译结果--cnki翻译助手举个例子反键轨道吧 当...

  • 【浏览器插件】超实用浏览器插件

    未完待续 ~~ 访问类 1、谷歌助手 地址 谷歌访问助手 简介 免费访问谷歌google搜索, chrome商店,...

  • 好用的Google插件

    谷歌访问助手 Dark Reader:为所有网页打开夜间模式。 划词翻译 Markdown Here:文字转换成M...

  • 科技洪潮

    今天早上刷朋友圈的时候,看到谷歌最新推出了新的耳机,可以和谷歌助手相连,实时翻译。看到这条,我不禁感到脊背发凉。我...

  • 安装`谷歌访问助手`问题记录

    在不能访问谷歌商站的情况下,安装谷歌访问助手,以解决访问谷歌应用商店、谷歌搜索的问题。于是从插件网下载谷歌访问助手...

  • 谷歌浏览器翻译助手问题

    开启翻译助手 vue 代码失去响应 或者未知莫名问题解决:关闭翻译助手index标签添加

  • github树形目录插件安装

    github树形目录插件安装 准备功夫 先准备个谷歌访问助手chrome版这个网址有安装谷歌访问助手教程安装谷歌访...

网友评论

      本文标题:活学活用Python01:谷歌翻译小助手

      本文链接:https://www.haomeiwen.com/subject/wjvfnttx.html