python批量翻译excel表格中的英文
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类来实现多线程处理。
- 创建一个 ThreadPoolExecutor对象。
- 在循环中遍历每个表格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表格中的英文相关推荐
- 用Python批量把EXCEL表格中的数据提交到网页上
因为工作的需要,要在网页上添加很多学员的信息,但是公司审计不让直接导入数据库,而且开发也没有涉及批量上传的功能,只好自己动手用Python写了一个批量创建学生信息的程序. 实现思路: 我们首先看我们需 ...
- 如何快速翻译excel表格中的英文?
1.打开Excel软件,如下图表格中含有部分英文,现在想要将其快速翻译掉. 2.首先我们选中单元格区域 3.然后点击如下图选项 4.点击[翻译],选择[有道翻译] 5.接着我们点击[确定] 6.选 ...
- 如何使用python批量合并excel表格
使用Python批量合并Excel表格的方法主要可以通过Pandas库来实现,具体步骤如下: 首先需要导入Pandas库和os库: import pandas as pd import os
- 如何将excel表格导入word_分享一种批量将Excel表格中联系方式导入至手机通讯录中的方法...
今天看到有个做销售的小哥在头条问问上提到如何将Excel表格中的顾客号码批量导入至手机通讯录中,无奈条友们的层次果然很低,没有几个说出所以然的,现在我就分享一种方法导入一下. 首先打开QQ邮箱,点&q ...
- python批量读取excel表格数据_Python读取Excel数据并生成图表过程解析
一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用Excel实现的.但数据行多后,图表大小调整总是不太方便,一般只能通过缩放比例解决. 二.需求实现目标 通过 ...
- 采用python批量统计分析Excel表格数据
最近为了做点小事情,需要对12个Excel文件进行处理,每个Excel文件的数据量都非常庞大.所处理的数据是全国196个站点2000年至2011年每天的降水数据,需要根据这些数据统计出每个站点的年降水 ...
- Python批量下载excel表中超链接图片
目录 背景 数据格式 处理步骤 1.使用xlrd读取excel表格数据 2.详细代码 ①引入相关库 ②实例代码 背景 导出数据到excel,数据中有图片,需求是批量下载图片的指定文件夹 数据格式 数据 ...
- python 批量合并Excel表格
在日常工作中,我们经常会遇到把许许多多的Excel 表格进行合并的情况.那么人工合并,不仅效率慢,而且还容易出错,其实我们是可以python 去实现这些重复性的工作. 假设,在我的电脑上,有这样的一些 ...
- Python批量导入Excel文件中的不重复数据到SQLite数据库
封面图片:<Python可以这样学>,董付国,清华大学出版社 ============== 好消息:智慧树网APP"知到"中搜索"董付国"可以免费观 ...
最新文章
- SystemTap工具的使用基础
- 如何在 Cypress 测试代码中屏蔽(Suppress)来自应用代码报出的错误消息
- Mysql for linux 安装
- 國慶和中秋的學習成果
- devops 开发_DevOps如何消除开发瓶颈
- 【ElasticSearch】ElasticSearch 7.8 IK 同义词 配置
- python获取交易软件数据_几行Python代码,轻松获取美股阿里巴巴的交易数据
- 智能优化算法:纵横交叉算法-附代码
- 编写技术解决方案思路
- matlab实现贝叶斯,最简单的贝叶斯分类器MATLAB实现
- 基于 MPC 控制算法的自适应巡航系统的研究
- t分布 u分布 卡方分布_卡方分布、t分布和f分布各有哪些重要性质?
- windows server 2012 更改网络位置
- jeesite 框架搭建与配置(笔记)
- 惠普触控板使用指南_惠普笔记本关闭触摸板【操作思路】
- Chrome浏览器添加信任站点
- 计算机配置高低怎么看,电脑配置的高低怎么查看
- Zxing 识别反色二维码
- 第06课:生活中的中介模式——找房子问中介
- 学校计算机班班通维护保养记录,班班通计算机教室管理制度..doc
热门文章
- c语言输入r1 r2垫片的面积,C语言基础入门设计
- HighNewTech:2021 年Google谷歌 I/O 开发者大会 Kemal 等三人主题演讲分享《TensorFlow 在机器学习领域的进展》
- 猿创征文|服务器中常用的几个资源监控工具整理
- 央企79号文助推信创,江民科技持续占据终端安全市场第一梯队
- redhat7.4离线安装cx_oracle
- 某DDOS攻击防御报告
- 软件工程理论与实践——吕云翔 课后第一章习题答案
- 《网络工程师必读网络安全系统设计》
- C陷阱与缺陷-疑难问题理解04
- [读论文]Referring Camouflaged Object Detection