当前位置: 首页 > article >正文

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. 明晰步骤,编写代码

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

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就会感觉非常有成就感。


http://www.kler.cn/a/395729.html

相关文章:

  • Python小游戏24——小恐龙躲避游戏
  • 【postman】怎么通过curl看请求报什么错
  • 基于STM32的智能家居安防系统设计
  • 怎么样绑定域名到AWS(亚马逊云)服务器
  • 大模型在蓝鲸运维体系应用——蓝鲸运维开发智能助手
  • SQL面试题——蚂蚁SQL面试题 会话分组问题
  • 3. Spring Cloud Eureka 服务注册与发现(超详细说明及使用)
  • 计算机网络中的域名系统(DNS)及其优化技术
  • 电子应用产品设计方案-9:全自动智能马桶系统设计方案
  • 面试问答:什么是滑动窗口
  • 一文说清:C静态库与动态库的区别
  • C#桌面应用制作计算器
  • 开源项目推荐——OpenDroneMap无人机影像数据处理
  • Oracle 单机及 RAC 环境 db_files 参数修改
  • Linux基础—pxe装机
  • 【拉箱子——模拟+DFS】
  • JAVA学习-练习试用Java实现“网络编程”
  • LlamaFactory介绍
  • Java爬虫:获取商品历史价格信息 API 数据
  • 英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2
  • CTF攻防世界小白刷题自学笔记12
  • 企业生产环境-麒麟V10(ARM架构)操作系统部署kafka高可用集群
  • Lambda常用方法
  • Kafka、RabbitMQ、RocketMQ对比
  • 开源对象存储新选择:在Docker上部署MinIO并实现远程管理
  • sql在按照当前表查询返回