python批量翻译excel表格中的英文

  • 需求背景
  • 主要设计
  • 分析
  • 具体实现
    • 表格操作
    • 请求百度翻译api
    • 多线程
    • 控制台显示进度
  • 完整源码

需求背景

女朋友的论文需要爬取YouTube视频热评,但爬下来的都是外文。

主要设计

  • 读取一个表格文件,获取需要翻译的文本
  • 使用百度翻译 API 进行翻译,获取翻译结果
  • 将翻译结果保存到原表格中,然后提取需要的列组成一个新的 DataFrame
  • 处理多个表格文件,将它们的翻译结果分别保存
  • 使用线程池加速翻译过程,可以同时翻译多个表格
  • 显示进度条

分析

  • 目标文件为xlsx格式,可以借助pandas进行读取文件和生成文件的操作。在这里我的源文件有若干列,其中第2列评论内容为我的目标列。
  • 在这里我用的是百度翻译api接口。也可以googletrans、translate,这些库可以在本地使用,不需要申请API密钥,但是翻译质量和速度可能不如云服务。
  • 由于我每个表格有2000行数据,总共有10个表格,一个个来的话不仅麻烦效率还低。
  • 我需要知道任务的进度,不想一直等下去

具体实现

表格操作

def TranslateTable(sInputFilename, sOutputFilename):# 读取表格A并选择需要翻译的列df_a = pd.read_excel(sInputFilename) # 获取df对象df_a = df_a.iloc[:, [1, 2]]  # iloc和loc很像,i=index,# 翻译英文列df_a['translation'] = df_a.iloc[:, 0].apply(Translate)# 创建表格B并保存df_b = pd.DataFrame({'原文': df_a.iloc[:, 0],'译文': df_a.iloc[:, 2]})df_b.to_excel(sOutputFilename, index=False)

请求百度翻译api

def Translate(sText, from_lang='en', to_lang='zh'):appid = 'xxxxxx'secret_key = 'xxxxxx'url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'salt = random.randint(32768, 65536)sign = hashlib.md5((appid + sText + str(salt) + secret_key).encode()).hexdigest()params = {'q': sText,'from': from_lang,'to': to_lang,'appid': appid,'salt': salt,'sign': sign}response = requests.get(url, params=params)result = json.loads(response.content.decode())if result.get('error_code') is not None:return Nonereturn result['trans_result'][0]['dst']

多线程

使用concurrent.futures库中的 ThreadPoolExecutor类来实现多线程处理。

  1. 创建一个 ThreadPoolExecutor对象。
  2. 在循环中遍历每个表格A,并使用 submit方法向线程池提交任务。 submit方法将表格A的文件名和表格B的文件名作为参数传递给 translate_column函数,该函数将在单独的线程中执行。

ThreadPoolExecutor会自动管理线程池的大小,并在有空闲线程时分配新任务。这种方式可以利用多个CPU核心来并行处理多个表格,提高处理速度。

def TranslateTables(sInputFolder, sOutputFolder):sInputFilenames = [os.path.join(sInputFolder, f) for f in os.listdir(sInputFolder) if f.endswith('.xlsx')]with ThreadPoolExecutor() as executor:lstFutures = []for sInputFilename in sInputFilenames:sFilename = os.path.splitext(os.path.basename(sInputFilename))[0]sOutputFilename = os.path.join(sOutputFolder, sFilename + '_翻译结果.xlsx')lstFutures.append(executor.submit(TranslateTable, sInputFilename, sOutputFilename))for future in tqdm(as_completed(lstFutures), total=len(lstFutures)):pass

控制台显示进度

使用 concurrent.futures.as_completed 函数显示进度条。

完整源码

# -*- coding: utf-8 -*-
# time: 2022/2/17 03:06
# file: test.py
# author: Shi Yasong"""
主要功能功能:1、读取一个表格文件,获取需要翻译的文本。2、使用百度翻译 API 进行翻译,获取翻译结果。3、将翻译结果保存到原表格中,然后提取需要的列组成一个新的 DataFrame。4、处理多个表格文件,将它们的翻译结果合并到一个 DataFrame 中,然后分别保存。5、使用线程池加速翻译过程,可以同时翻译多个表格6、使用  concurrent.futures.as_completed 函数显示进度条。
"""from concurrent.futures import ThreadPoolExecutor, as_completed
from tqdm import tqdm  # 进度条库,需要先安装import pandas as pd
import requests
import json
import os
import hashlib
import randomdef Translate(sText, from_lang='en', to_lang='zh'):appid = 'xxxx'secret_key = 'xxxxx'url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'salt = random.randint(32768, 65536)sign = hashlib.md5((appid + sText + str(salt) + secret_key).encode()).hexdigest()params = {'q': sText,'from': from_lang,'to': to_lang,'appid': appid,'salt': salt,'sign': sign}response = requests.get(url, params=params)result = json.loads(response.content.decode())if result.get('error_code') is not None:return Nonereturn result['trans_result'][0]['dst']def TranslateTable(sInputFilename, sOutputFilename):# 读取表格A并选择需要翻译的列df_a = pd.read_excel(sInputFilename) # 获取df对象df_a = df_a.iloc[:, [1, 2]]  # iloc和loc很像,i=index,# 翻译英文列df_a['translation'] = df_a.iloc[:, 0].apply(Translate)# 创建表格B并保存df_b = pd.DataFrame({'原文': df_a.iloc[:, 0],'译文': df_a.iloc[:, 2]})df_b.to_excel(sOutputFilename, index=False)def TranslateTables(sInputFolder, sOutputFolder):sInputFilenames = [os.path.join(sInputFolder, f) for f in os.listdir(sInputFolder) if f.endswith('.xlsx')]with ThreadPoolExecutor() as executor:lstFutures = []for sInputFilename in sInputFilenames:sFilename = os.path.splitext(os.path.basename(sInputFilename))[0]sOutputFilename = os.path.join(sOutputFolder, sFilename + '_翻译结果.xlsx')lstFutures.append(executor.submit(TranslateTable, sInputFilename, sOutputFilename))for future in tqdm(as_completed(lstFutures), total=len(lstFutures)):pass# 调用函数翻译多个表格
sInputFolder = r'C:\Users\lenovo\Desktop\english'  # 修改为实际的表格文件夹路径
sOutputFolder = r'C:\Users\lenovo\Desktop\zh'  # 修改为实际的表格文件夹路径
TranslateTables(sInputFolder, sOutputFolder)

python批量翻译excel表格中的英文相关推荐

  1. 用Python批量把EXCEL表格中的数据提交到网页上

    因为工作的需要,要在网页上添加很多学员的信息,但是公司审计不让直接导入数据库,而且开发也没有涉及批量上传的功能,只好自己动手用Python写了一个批量创建学生信息的程序. 实现思路: 我们首先看我们需 ...

  2. 如何快速翻译excel表格中的英文?

    1.打开Excel软件,如下图表格中含有部分英文,现在想要将其快速翻译掉. 2.首先我们选中单元格区域 3.然后点击如下图选项 ​ 4.点击[翻译],选择[有道翻译] 5.接着我们点击[确定] 6.选 ...

  3. 如何使用python批量合并excel表格

    使用Python批量合并Excel表格的方法主要可以通过Pandas库来实现,具体步骤如下: 首先需要导入Pandas库和os库: import pandas as pd import os

  4. 如何将excel表格导入word_分享一种批量将Excel表格中联系方式导入至手机通讯录中的方法...

    今天看到有个做销售的小哥在头条问问上提到如何将Excel表格中的顾客号码批量导入至手机通讯录中,无奈条友们的层次果然很低,没有几个说出所以然的,现在我就分享一种方法导入一下. 首先打开QQ邮箱,点&q ...

  5. python批量读取excel表格数据_Python读取Excel数据并生成图表过程解析

    一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用Excel实现的.但数据行多后,图表大小调整总是不太方便,一般只能通过缩放比例解决. 二.需求实现目标 通过 ...

  6. 采用python批量统计分析Excel表格数据

    最近为了做点小事情,需要对12个Excel文件进行处理,每个Excel文件的数据量都非常庞大.所处理的数据是全国196个站点2000年至2011年每天的降水数据,需要根据这些数据统计出每个站点的年降水 ...

  7. Python批量下载excel表中超链接图片

    目录 背景 数据格式 处理步骤 1.使用xlrd读取excel表格数据 2.详细代码 ①引入相关库 ②实例代码 背景 导出数据到excel,数据中有图片,需求是批量下载图片的指定文件夹 数据格式 数据 ...

  8. python 批量合并Excel表格

    在日常工作中,我们经常会遇到把许许多多的Excel 表格进行合并的情况.那么人工合并,不仅效率慢,而且还容易出错,其实我们是可以python 去实现这些重复性的工作. 假设,在我的电脑上,有这样的一些 ...

  9. Python批量导入Excel文件中的不重复数据到SQLite数据库

    封面图片:<Python可以这样学>,董付国,清华大学出版社 ============== 好消息:智慧树网APP"知到"中搜索"董付国"可以免费观 ...

最新文章

  1. SystemTap工具的使用基础
  2. 如何在 Cypress 测试代码中屏蔽(Suppress)来自应用代码报出的错误消息
  3. Mysql for linux 安装
  4. 國慶和中秋的學習成果
  5. devops 开发_DevOps如何消除开发瓶颈
  6. 【ElasticSearch】ElasticSearch 7.8 IK 同义词 配置
  7. python获取交易软件数据_几行Python代码,轻松获取美股阿里巴巴的交易数据
  8. 智能优化算法:纵横交叉算法-附代码
  9. 编写技术解决方案思路
  10. matlab实现贝叶斯,最简单的贝叶斯分类器MATLAB实现
  11. 基于 MPC 控制算法的自适应巡航系统的研究
  12. t分布 u分布 卡方分布_卡方分布、t分布和f分布各有哪些重要性质?
  13. windows server 2012 更改网络位置
  14. jeesite 框架搭建与配置(笔记)
  15. 惠普触控板使用指南_惠普笔记本关闭触摸板【操作思路】
  16. Chrome浏览器添加信任站点
  17. 计算机配置高低怎么看,电脑配置的高低怎么查看
  18. Zxing 识别反色二维码
  19. 第06课:生活中的中介模式——找房子问中介
  20. 学校计算机班班通维护保养记录,班班通计算机教室管理制度..doc

热门文章

  1. c语言输入r1 r2垫片的面积,C语言基础入门设计
  2. HighNewTech:2021 年Google谷歌 I/O 开发者大会 Kemal 等三人主题演讲分享《TensorFlow 在机器学习领域的进展》
  3. 猿创征文|服务器中常用的几个资源监控工具整理
  4. 央企79号文助推信创,江民科技持续占据终端安全市场第一梯队
  5. redhat7.4离线安装cx_oracle
  6. 某DDOS攻击防御报告
  7. 软件工程理论与实践——吕云翔 课后第一章习题答案
  8. 《网络工程师必读网络安全系统设计》
  9. C陷阱与缺陷-疑难问题理解04
  10. [读论文]Referring Camouflaged Object Detection