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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 屏幕硬件参数选取

    屏幕硬件参数选取

    2021年7月20日
    63
  • xshell安装python库_xshell安装jdk

    xshell安装python库_xshell安装jdkxshell安装python下载需要的python.tgz包。https://www.python.org/把下载好的包上传到xshell中,然后解压。tar-zxvfPython-3.6.6.tgz编译安装,进入python文件夹cdPython-3.6.6,执行命令进行编译./configure–prefix=/usr/local/python36//默认安装在/usr/local下make#相当于把源码包里面的代码编译成linux服务器可以识别的代码

    2025年10月12日
    5
  • android rootfs的挂载流程[通俗易懂]

    android rootfs的挂载流程[通俗易懂]一、ramdisk的制作out/host/linux-x86/bin/mkbootfsout/target/product//root|out/host/linux-x86/bin/minigzip>out/target/product//ramdisk.img上述命令分两步进行:1.out/host/linux-x86/bin/mkbootfsout/target/prod

    2022年10月6日
    10
  • winfrom DotNetBar sideNav控件使用问题

    winfrom DotNetBar sideNav控件使用问题sideNav初始UI在最开始的界面,不知道设置了什么东西,然后没有那个东西最后又新建了个项目,一个一个对比参数。还是没找到!倒是发现几个其他的参数属性在这里记录下这是分别对应的是对sideNav的sideNavPanel的折叠最大化隐藏功能,可以设置为false,取消对应图标。当查完sideNav所以属性后,没有发现不同点,…

    2025年6月18日
    2
  • vb教程编程实例详解pdf_vb程序设计教程答案第四版

    vb教程编程实例详解pdf_vb程序设计教程答案第四版实验8-7在教学篇例8.7的基础上增加“修改确定”按钮以及用于定位记录的按钮面板,如图2.8.5所示,并编写时间过程。解题,代码如下:先建立标准模块,代码是:TypestudtypeiNoAsIntegerstrNameAsString*20strSexAsString*1sMarkAsSingleEndType…

    2022年10月7日
    2
  • NIO与传统IO的区别

    NIO与传统IO的区别传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。小量的线…

    2022年6月13日
    26

发表回复

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

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