最近在阅读外文文献时由于自己英文水平不够,看起来很吃力。但是PDF格式的文献复制出来会有很多莫名其妙的换行,所以想自己写一个翻译软件去掉多余的换行并且进行翻译。

首先,我的想法是使用谷歌翻译,但是无奈谷歌翻译不再免费只能退而求其次,使用百度翻译和有道翻译(据说有道翻译也不错)。先上个图,使用界面的图:

下面仔细介绍如何使用API,以百度翻译为例:

1、首先登录http://api.fanyi.baidu.com/api/trans/product/index,申请百度翻译API权限,这时候会生成APPID和密钥。

2、在翻译开放平台上,我们找到接入文档,会看到各语言demo,其中有PHP,JS,Python和Java等,根据需要下载即可。

3、下载Python的demo,但是官网的demo是Python2写的,里面有一些代码需要更改,具体如下:

所以具体代码如下:

def baidu_translation(content):appid = 'XXXXXXX' #你的appidsecretKey = 'XXXXXXXX' #你的密钥httpClient = Nonemyurl = '/api/trans/vip/translate'q = contentfromLang = 'en'toLang = 'zh'salt = random.randint(32768, 65536)sign = appid+q+str(salt)+secretKeysign = hashlib.md5(sign.encode()).hexdigest()myurl = myurl+'?appid='+appid+'&q='+urllib.parse.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+signtry:httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')httpClient.request('GET', myurl)#response是HTTPResponse对象response = httpClient.getresponse()jsonResponse = response.read().decode("utf-8")  # 获得返回的结果,结果为json格式js = json.loads(jsonResponse)  # 将json格式的结果转换字典结构dst = str(js["trans_result"][0]["dst"])  # 取得翻译后的文本结果return(dst)  # 打印结果except Exception as e:print(e)finally:if httpClient:httpClient.close()

对于我们从服务器获得的数据,我们需要先了解数据接口,就像有道翻译里给出的:

我们通过各个字段就可以获得不同的数据信息。

4、经过测试,我们可以得出翻译结果。这时候我们就需要一个GUI界面。Python中的GUI自带的是tkinter,我使用两个text控件和一个button控件,分别用来显示原语言,翻译结果,还有开始翻译的功能。我使用的是Place方法布局,place使用的是绝对坐标,是以像素为单位的。例:

这样我们就写完了整个界面,接下来需要实现消除换行的功能。

5、消除换行:从读入的数据中找到所有的回车,替换为空格。代码很简单,

user = user.replace('\n', ' ')

这句话就可以实现换行。但是这样不能区分是真的段末回车还是PDF中复制出来的不必要的回车,所以我们可以进行一个判断,判断回车符之前是不是句号,如果是句号就不需要进行替换。(一般情况下是这样的吧。。。)

这样的话,我们的整个消除换行翻译软件差不多就完成了,有道翻译也是类似的,有道翻译api的代码大家可以参考一下:

def youdao_translation(content):appKey = 'XXXXXXXXXX' #你的appidsecretKey = 'XXXXXXXXXXXXXXXXXX' #你的密钥httpClient = Nonemyurl = 'http://openapi.youdao.com/api'q = contentfromLang = 'EN'toLang = 'zh-CHS'salt = random.randint(1, 65536)sign = appKey + q + str(salt) + secretKeym1 = hashlib.md5()m1.update(sign.encode('utf-8'))sign = m1.hexdigest()myurl = myurl + '?appKey=' + appKey + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + signtry:httpClient = urlopen(myurl)response = eval(httpClient.read().decode())#l1 = len(response["translation"])#l2 = len(response["basic"]["explains"])#if response["translation"] and l1 > l2:return(response["translation"])#else:#print(response["basic"]["explains"])except Exception as e:print(e)finally:if httpClient:httpClient.close()

6、翻译功能到这里就写完了,但是我们现在还是在Python中完成的运行,我们可以将py脚本导出为EXE,具体办法大家可以自行百度,有很多类似的文章。软件到这里就完成了!

Python3.X 调用百度翻译API和有道翻译API相关推荐

  1. 离线翻译android开发,有道翻译官推出Android版 可离线翻译多国语言

    日前,有道翻译官正式推出安卓版,凭借多国语言离线翻译和国内首创的多语种摄像头翻译等功能,为广大用户提供最便捷实用的翻译体验. 有道翻译官曾在iOS平台上大放异彩,上线当日,即取得了App Store ...

  2. 桌面每日一句--桌面翻译工具(有道翻译,微软翻译,Google翻译)

    桌面每日一句--桌面翻译工具(有道翻译,微软翻译,Google翻译) 现在的翻译软件功能越来越多,也越来越臃肿,还不时弹广告,真的很烦恼. 鉴于这种情况,自己做了个翻译软件,能满足日常需求就好了.需要 ...

  3. php 有道 翻译 空白,记“有道翻译API”与PHP的结合

    记"有道翻译API"与PHP的结合 时间 :2016-10-3  评论: [ 0 ] 条  浏览: [ 664 ] 次 废话不多 直接上源码(api接口隐藏) 有一个新函数 会在最 ...

  4. python有道字典翻译_Python 调取有道翻译接口实现在线翻译功能

    有道翻译有反爬虫机制,它使用了加密技术.如果你的程序报错,你可以通过搜索.查阅资料找到解决方案:尝试把访问的网址中"/translate_o"中的"_o"删除. ...

  5. python语音翻译-python利用有道翻译实现“语言翻译器”的功能

    importurllib.requestimporturllib.parseimportjsonwhileTrue: content= input('请输入需要翻译的内容(退出输入Q):')if co ...

  6. php 获取有道翻译,python爬虫 身边的翻译专家——获取有道翻译结果

    [导读]有道翻译可以直接翻译内容,观察它的网页内容以及URL可以发现,它的基本url 和将要翻译的内容... 本文目的:使用python 实现翻译效果 思路:有道翻译可以直接翻译内容,观察它的网页内容 ...

  7. python3怎么调用百度搜索推广API,最新能成功的方法

    最近需要用到百度竞价后台的关键词规划师,后台虽然也能查,但是只能单次查1000个,有时候有很大量词需要查的时候就感觉工作量那个巨大..所以为了以后工作方便,想做一个工具,方便使用. 查看百度营销api ...

  8. Java实现调用百度AI开放云平台(人脸识别API)

    版权声明:本文为转载文章,遵循 CC 4.0 BY-SA 版权协议 https://blog.csdn.net/zmx729618/article/details/78132942

  9. 禅道 php api,云禅道有API的方式可以获取数据吗

    api相关手册: api接口查看,可以本地搭建和云禅道相同版本的禅道,然后admin 后台 二次开发 api,可以查看接口列表. api调用步骤 PATH_INFO方式 1.访问 http://x.c ...

最新文章

  1. 计蒜客 神奇的二叉树 ( 已知先序和中序遍历构建二叉树 )
  2. 统计模型参数量与FLOPs
  3. java httpinvoker漏洞_Java反序列化漏洞学习
  4. **kw传参一个重要的细节
  5. cocos2d-html5 onEnter init ctor构造函数 ----js特有特性(和c++有一点不一样)
  6. 无招胜有招之Java进阶JVM(一)
  7. Shell编程之条件语句(if语句,case分支语句)
  8. 精选| 2021年9月R新包推荐(第58期)
  9. 【Gamma】 Phylab 发布说明
  10. 占用51cto。记录自己
  11. mysql必须记住的单词_如何真正记住英语单词?
  12. 金蝶EAS初始化操作手册之科目表
  13. Laravel Eloquent 数据查询结果中日期的格式化
  14. 数据中心“容灾”和“备份”的区别
  15. 详解分级基金(杠杆基金)【精华】 【转】
  16. .net反编译的九款神器
  17. 平台搭建---Hive使用介绍
  18. 15.6 模板全特化与偏特化(局部特化)
  19. 小白如何装重装操作系统(使用PE辅助)
  20. Elasticsearch04:ES集群监控管理工具-cerebro

热门文章

  1. 【Windows】【Linux】---- Java证书导入
  2. 2017测试之路怎么走?
  3. 红外遥控器操作海康威视摄像头云台
  4. 【高等数学】求空间直角坐标系中一点到一平面的投影
  5. 24核48线虚拟化服务器,24核48线程的威力:戴尔PowerEdge R910服务器评测
  6. python古诗朝代_用 Python 编写中国历史知识库,此时不用中文命名变量更待何时?...
  7. long数据类型java_[二]基础数据类型之Long详解
  8. 准备开始layabox了
  9. 十大经典排序算法动画,看我就够了!
  10. 《陈海贤---如何面都不确定》有感