Python翻译Excel文件

Python翻译Excel文件朋友需要翻译大量 Excel 文件内容 看我是否能搭把手 我的思路很简单 就是将 Excel 文件内容读出后 调用翻译软件的 API 然后再爬回翻译好的内容 写入 Excel 读取 Excel 文件内容的方法 我这里要处理的是 xlsx 文件 可以 importopenpy 如果要处理 xls 文件 就不能用这个 而是 importxlrd 或者先将 xks 文件转为 xlsx 文件再使用本文代码 具体这两个包提

朋友需要翻译大量Excel文件内容,看我是否能搭把手,我的思路很简单,就是将Excel文件内容读出后,调用翻译软件的API,然后再爬回翻译好的内容,写入Excel。

读取Excel文件内容的方法:我这里要处理的是 .xlsx文件,可以import openpyxl,如果要处理.xls文件,就不能用这个,而是import xlrd,或者先将.xks文件转为.xlsx文件再使用本文代码。具体这两个包提供的方法是如何操作Excel文件的,自行百度查看其使用文档就一眼明了了。

调用API:调用百度翻译API,可进入“百度翻译开放平台”进行用户注册,和申请使用。免费的标准版就够用,只是限制每秒最多只能访问一次。(但是免费真香= =)。
申请完后就会有自己的APP ID 和秘钥,这是访问百度翻译API时必须发送的参数。想具体知道如何使用翻译API,它的接入方式,地址,参数等等,可参考“通用翻译API接入文档”

下面逐部分放出全部代码:

mport hashlib import random import openpyxl from openpyxl import Workbook import requests import time 

引入time是因为,免费版的API限制每秒只能访问一次,如果不做停顿,结果会有很多空白= =

apiurl = 'http://api.fanyi.baidu.com/api/trans/vip/translate' appid = '输入自己的APP ID' secretKey = '输入自己的秘钥' 

APP ID 和 秘钥 在“百度翻译开放平台”上注册完就能得到。

def translateBaidu(content, fromLang='en', toLang='zh'): salt = str(random.randint(32768, 65536)) sign = appid + content + salt + secretKey sign = hashlib.md5(sign.encode("utf-8")).hexdigest() try: paramas = { 
    'appid': appid, 'q': content, 'from': fromLang, 'to': toLang, 'salt': salt, 'sign': sign } response = requests.get(apiurl, paramas) jsonResponse = response.json() dst = str(jsonResponse["trans_result"] [0]["dst"]) return dst except Exception as e: print(e) 

这是从Excel得到翻译内容后,构造相应的请求参数,然后发送至百度翻译API,并将其翻译结果,以Json的格式获取,并剥离出来。这些参数的设计和Json结果的剥离,都可以直接从“通用翻译API接入文档”里得知。

def excelTrans(srcFilename=r'c:\Users\Administrator\Desktop\source.xlsx', desFilename=r'c:\Users\Administrator\Desktop\result.xlsx', srcSheet='Sheet1', desSheet='result1'): wb = openpyxl.load_workbook(srcFilename) ws = wb[srcSheet] wb2 = Workbook() ws2 = wb2.create_sheet(title=desSheet) for i in range(1, 需要翻译的那一列的行数+1): b = ws.cell(row=i, column=1).value print(str(b)) result = translateBaidu(str(b)) ws2.cell(row=i, column=1).value = str(result) time.sleep(1) wb2.save(desFilename) 

srcFilename要填需要翻译的Excel文件路径,destFilename填翻译后生成的文件路径,srcSheet为需要翻译Excel文件里的哪一个表,desSheet表示在Excel文件里生成的表名。

if __name__ == '__main__': print('start translating...') excelTrans() print('ending...') 

代码全连起来后可用,也可根据自己的需要进行更改,比如需要翻译的源语种和目标语种可通过查 百度翻译API的开发文档更改参数;对于Excel文件的操作,则直接看openpyxl的文档或者网上总结它的常用方法,就可灵活运用了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232524.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux中lamp架构搭建_docker搭建redis集群

    linux中lamp架构搭建_docker搭建redis集群文章目录一、什么是LAMP架构二、各组件的作用1.Apache(前台)2.MYSQL(后台)3.PHP/Perl/Python4.linux三、LAMP架构安装一、什么是LAMP架构LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MYSQL数据库服务器、PHP(Perl、python)网页编程语言。在构建LAMP架构时,各组件的安装顺序以此为Lin

    2022年10月16日
    2
  • flow control通常的方法

    flow control通常的方法半双工模式下:通过backpressure背压有2种方式,一是当交换机侦听到一个输入帧,就立刻发送一个空的帧

    2022年6月5日
    30
  • Pycharm轻松创建Flask项目

    Pycharm轻松创建Flask项目打开Pycharm的file,选择创建新的项目,然后弹出对话框,我们可以看到里面有很多的案例,Flask、Django等等,我们选择生成Flask的demo程序。选择创建之后一个简易的Flask项目就出现在我们眼前,第一个是入口程序,还有一个static的静态目录,templates是模板存放的位置。在Pycharm上面有个run,我们可以选择run来启动Flask的服务,默认打开…

    2022年8月25日
    3
  • Modbus 通讯协议 (RTU传输模式)「建议收藏」

    Modbus 通讯协议 (RTU传输模式)「建议收藏」第一章Modbus协议简介Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,

    2022年7月12日
    82
  • JavaScript高级程序设计 第4版(中文高清)扫描版

    JavaScript高级程序设计 第4版(中文高清)扫描版核心ECMAScript文档对象模型DOM浏览器对象模型BOMECMAScript定义语言的基础规定了语言的组成部分:语法、类型、语句、关键字、保留字、操作符、对象

    2022年8月20日
    6
  • 轮到你了 番外篇_碳酸危机52书库

    轮到你了 番外篇_碳酸危机52书库饰品模型篇乐高生活大爆炸对于乐高积木,其实我也是早有耳闻。但是高昂的价格摆在那里,我也只能望而却步。而送给程序员最好的礼物里面,也包含有可编程的乐高机器人,可见对于工科男来说,乐高真的是非常棒的礼物了。而我拥有的第一款乐高玩具,是我研二暑假的时候。那个时候正好也没什么事,看了好几天的乐高论坛以后,觉得科技系列的模型很棒,很符合我那藏在内心深处的,对于马达齿轮传动装置等机械品的向往。于

    2022年8月20日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号