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


相关推荐

  • android declare-styleable 和style,Android 关于declare-styleable属性的写法….

    android declare-styleable 和style,Android 关于declare-styleable属性的写法….我想问自定义View的时候,以下这段代码,为何要写两次一样的名称呢?我看了一些资料,说写在declare-styleable系统会自动生成数组…..我不太明白这实际应用是什么?如果说自动帮你生成了数组,方便使用,那写在外面的三个又有什么作用?能从实际应用中讲一讲吗?<?xmlversion=”1.0″encoding=”utf-8″?><resources><at…

    2022年7月13日
    16
  • java递归和迭代的区别

    java递归和迭代的区别出现栈的溢出.而迭代不会!  递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.使用递归要注意的有两点:1)递归就是在过程或函数里面调用自身;2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口. 递归分为两个阶段:1)递推:把复杂的问题的求解推到比原问

    2022年5月5日
    49
  • 探索WebKit内核(一)—— 菜鸟起步

    探索WebKit内核(一)—— 菜鸟起步

    2021年12月1日
    102
  • Pytorch cuda上的tensor转numpy[通俗易懂]

    Pytorch cuda上的tensor转numpy[通俗易懂]#model_out为CUDA上的tensormodel_out=model_out.cpu()#detach():去除梯度model_out=model_out.detach().numpy()

    2022年10月19日
    2
  • c获取网卡序列号_win10查看序列号命令

    c获取网卡序列号_win10查看序列号命令privatevoidbutton1_Click(objectsender,EventArgse){textBox1.Text=””;foreach(stringsinlistBox1.SelectedItems){ManagementObjectSearchersearche…

    2022年10月2日
    6
  • latex中的希腊字母表在哪里_表示角度的希腊字母

    latex中的希腊字母表在哪里_表示角度的希腊字母在写论文的过程中,编辑公式部分会有一些希腊字母需要用LaTeX形式,将其汇总如下,方便查阅。希腊字母小写、大写LaTeX形式希腊字母大小LaTeX形式αA\alphaAαA\alphaAμN\muNμN\muNβB\betaBβB\betaBξΞ\xi\XiξΞ\xi\XiγΓ\gamma\GammaγΓ\gamma\GammaoOoOoOoOδΔ\delta\DeltaδΔ\delta\DeltaπΠ\pi\P

    2022年10月11日
    3

发表回复

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

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