Python调用API翻译Excel中的英语句子并回填数据

一、问题描述

最近遇到一个把Excel表中两列单元格中的文本读取,然后翻译,再重新回填到单元格中的案例。大约有700多行,1400多个句子,一个个手动复制粘贴要花费不少时间,而且极易出错。这时,我们就可以请出批量Excel的工具Python,利用Python读取两列中非空单元格,调用小牛机器翻译的API,然后把例句翻译后,与原文分两段排列,有效解决了手工复制慢的问题。

样例

二、解决过程

1. 前期准备,申请小牛API

要申请小牛机器翻译的api,拿到它的样例代码,如果你还不太熟练这个过程,可以参考我以前的文章:

用小牛翻译API让ChatGPT给我做个在线翻译网站_chatgpt在线翻译-CSDN博客文章浏览阅读2.2k次。经过测试,上面这段代码有两个问题,一是返回的翻译结果是json格式,不是我们想要的译文,二是打开网页时,这个翻译结果框不显示,显得不是特别好看。这时,我们要请出ChatGPT,设计好我们想要的网页呈现形式,同时还要把我们在小牛翻译上面得到的代码样例,同时在开发过程中,还要在我们的网站上进行测试效果,以期达到我们想到的目标。在上面例子中,我对于生成的译文可以进行译后编辑,也可以再喂给ChatGPT,让它指出我们的语法错误,润色我们的文字,提出进一步修改的意见,这样我们的译文质量就又可以更上一层楼了。_chatgpt在线翻译https://pythonfun.blog.csdn.net/article/details/130538982

2. 分析任务,确保效果

有了api,下一步是分析一下这个Excel表,发现要翻译的是E列和F列,所以我们就可以设置从E列和F列的第三行开始读取,然后翻译,遇到空的单元格就跳过。由于小牛翻译每天给20万字符的翻译,而且QPS可以达到5,也就是一秒可以调用五次,因次是非常适合python调用的。

3. 明晰步骤,编写代码

于是,我们就撰写出下面的代码:

python 复制代码
import requests
from openpyxl import load_workbook
from urllib import parse,request
# 翻译函数
apikey="xiaoniu_api_key" #把你的小牛翻译api贴到这里
def translate_txt(sentence):
    url = 'http://api.niutrans.com/NiuTransServer/translation?'
    data = {"from": "en", "to": 'zh', "apikey": apikey, "src_text": sentence}
    data_en = parse.urlencode(data)
    req = url + "&" + data_en
    res = request.urlopen(req)
    res_dict = json.loads(res.read())
    if "tgt_text" in res_dict:
        result = res_dict['tgt_text']
    else:
        result = res
    return result

# 读取Excel文件并进行翻译
def translate_excel(file_path):
    # 加载工作簿
    wb = load_workbook(file_path)
    ws = wb.active  # 获取当前活动的工作表
    
    # 从E3和F3开始读取
    row = 3
    while True:
        e_cell = ws[f'E{row}']
        f_cell = ws[f'F{row}']
        
        # 如果E列和F列的单元格都为空,结束循环
        if not e_cell.value and not f_cell.value:
            break
        
        # 翻译非空的E列和F列
        if e_cell.value:
            e_cell.value = e_cell.value+ "\n"+ translate_txt(e_cell.value)
        if f_cell.value:
            f_cell.value = f_cell.value + "\n" + translate_txt(f_cell.value)
        
        row += 1
    
    # 保存修改后的Excel文件
    wb.save('translated_file.xlsx')
    print("翻译完成,已保存为 'translated_file_外研版 语境版单词表xlsx(1) - 副本.xlsx'")

try:
    translate_excel('外研版 语境版单词表xlsx(1) - 副本.xlsx')
except Exception as exc:
    print(exc)

经过测试,翻译的效果还不错,1400个单元格大约用了不到五分钟就完成了任务,而且全过程无人职守,出去吃个水果,回来工作就已经完成了。

三、学后总结

  1. 在日常工作和办公中,如果是批量的、重复性的工作可以想办法用python来解决,节省人才和物力,提高办公的效率。

  2. 使用Python时,一定要明确目标和方法,分析问题确定解决步骤,会借助常用的python模块解决现实问题,这样学Python就会感觉非常有成就感。

相关推荐
摩羯座-1856903059411 分钟前
Python数据可视化基础:使用Matplotlib绘制图表
大数据·python·信息可视化·matplotlib
lingchen19061 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
爱隐身的官人1 小时前
cfshow-web入门-php特性
python·php·ctf
gb42152871 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
THMAIL1 小时前
量化股票从贫穷到财务自由之路 - 零基础搭建Python量化环境:Anaconda、Jupyter实战指南
linux·人工智能·python·深度学习·机器学习·金融
~-~%%1 小时前
从PyTorch到ONNX:模型部署性能提升
人工智能·pytorch·python
一朵梨花压海棠go1 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
蒋星熠1 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程
翻滚丷大头鱼2 小时前
Java 集合Collection—List
java·开发语言
爬虫程序猿2 小时前
《京东商品详情爬取实战指南》
爬虫·python