一个用于翻译 CSV 文件的 Python 脚本,适用于将英文内容批量翻译成中文(或其他语言),并解决文件编码导致的中文乱码和无法翻译的问题。

server/2025/1/15 23:59:40/

将CSV文件中的英文批量翻译成中文的 Python 脚本

  一个用于翻译 CSV 文件的 Python 脚本,适用于将英文内容批量翻译成中文(或其他语言),并解决文件编码导致的中文乱码和无法翻译的问题。

主要功能:

  1. 文件编码转换:在翻译之前自动检测并将输入文件转换为 UTF-8 编码,支持多种常见的文件编码格式(如 GBK​、ISO-8859-1​ 等),避免因编码不一致导致的读取错误。
  2. 批量翻译:使用 Google 翻译 API(通过 pygtrans​ 库)批量翻译 CSV 文件中的内容,支持自定义源语言和目标语言。
  3. 自动编码处理:翻译后将文件保存为 utf-8-sig​ 编码,确保文件可以在 Windows 系统(如 Excel)中正确显示中文,避免乱码问题。

使用方式:

  1. 下载或克隆此脚本,并确保安装了所需依赖(pandas​ 和 pygtrans​)。
  2. 修改输入和输出 CSV 文件路径。
  3. 运行脚本,脚本将自动转换编码、翻译内容,并保存翻译后的文件。

  这是一个简洁实用的工具,适合需要大批量翻译 CSV 文件内容,并确保文件编码兼容性的用户。

  安装依赖:pip install pandas pygtrans

import pandas as pd
from pygtrans import Translate
import os# 转换文件编码到 UTF-8
def convert_to_utf8(input_file, temp_file):try:with open(input_file, 'rb') as f:raw_data = f.read()# 尝试以各种常见编码读取文件for encoding in ['utf-8', 'gbk', 'iso-8859-1', 'latin1']:try:decoded_data = raw_data.decode(encoding)print(f"使用 {encoding} 编码读取文件成功")breakexcept UnicodeDecodeError:continueelse:print("文件编码无法识别")return False# 将文件以 UTF-8 编码写入到临时文件with open(temp_file, 'w', encoding='utf-8') as f:f.write(decoded_data)return Trueexcept Exception as e:print(f"转换文件编码到 UTF-8 失败: {e}")return False# 示例,调整源语言和目标语言设置
def translate_texts(texts, client, source_lang='en', target_lang='zh'):"""批量翻译文本"""try:translations = client.translate(texts, source=source_lang, target=target_lang)translated_texts = [translation.translatedText for translation in translations]  for text, translated_text in zip(texts, translated_texts):print(f"原文: {text} -> 翻译: {translated_text}")return translated_textsexcept Exception as e:print(f"翻译失败: {e}")return texts# 翻译 CSV 文件
def translate_csv(input_csv, output_csv):# 临时文件名,用于存储 UTF-8 编码格式的文件temp_csv = "temp_utf8.csv"# 转换输入文件为 UTF-8 编码if not convert_to_utf8(input_csv, temp_csv):print("文件转换失败,无法继续翻译")return# 读取转换后的 CSV 文件print(f"尝试读取文件: {temp_csv}")if not os.path.isfile(temp_csv):print(f"错误: 文件 {temp_csv} 不存在")return# 读取 CSV 文件data = pd.read_csv(temp_csv)print(f"读取数据成功,数据示例: \n{data.head()}")# 创建翻译客户端client = Translate(proxies={'http': 'http://localhost:10809', 'https': 'http://localhost:10809'})# 遍历数据框中的每一列进行翻译for column in data.columns:# 仅翻译字符串类型的单元格texts_to_translate = data[column].dropna().astype(str).tolist()print(f"开始翻译列: {column}")translations = translate_texts(texts_to_translate, client)# 将翻译结果插入数据框中translation_dict = dict(zip(texts_to_translate, translations))data[column] = data[column].apply(lambda x: translation_dict.get(x, x) if isinstance(x, str) else x)# 将翻译后的数据框保存到新的 CSV 文件,使用 'utf-8-sig' 编码data.to_csv(output_csv, index=False, encoding='utf-8-sig')print(f"翻译完成,结果保存到 {output_csv}")if __name__ == "__main__":input_csv = "你要翻译的文件路径"output_csv = "你要输出的文件路径" #这两个路径填的时候注意两点 :1是 都要精确到具体的文件名,2是 路径中不能是反斜杠print(f"输入的 CSV 文件路径: {input_csv}")print(f"输出的 CSV 文件路径: {output_csv}")translate_csv(input_csv, output_csv)

  ‍


http://www.ppmy.cn/server/117517.html

相关文章

pycharm调试知识, 线程进程与深度学习

pycharm调试, 在调试(debugging)过程中,Step Over 是一个常见的操作,用来控制代码的执行方式。它的意思是让调试器执行当前行的代码,但是如果这行代码中有函数调用,调试器不会进入该函数的内部…

【自动化测试】自动化测试的价值和误区以及如何高效实用地落地自动化测试

引言 自动化并不仅仅是机器“点点点”的操作。虽然从表面上看,自动化测试确实涉及到了机器按照预设的脚本进行一系列的操作,但它的内涵远比这要丰富得多 高效实用地落地自动化测试,需要从策略规划、工具选择、团队协作、持续改进等多个方面进…

如何将镜像推送到docker hub

前言 这一篇应该是最近最后一篇关于docker的博客了,咱来个有始有终,将最后一步——上传镜像给他写完,废话不多说,直接进入正题。 登录 首先需要确保登录才能推送到你的仓库中去,在终端输入docker login,输入用户名和…

idea激活页面怎么打开

打开Help------选择Register 然后就可以选择激活方式了

【干货分享】Ftrans安全数据交换系统 搭建跨网数据传输通道

安全数据交换系统是一种专门设计用于在不同的网络、系统或组织之间安全地传输数据的软件或硬件解决方案。这种系统通常包含多种安全特性,以确保数据在传输过程中的保密性、完整性和可用性。 安全数据交换系统可以解决哪些问题? 安全数据交换系统主要解…

术语“in law”(在分布上)

在概率论和统计学中,术语“in law”(在分布上)指的是随机变量的分布收敛到某个目标分布的情况。下面是对这个概念及其在定理中的应用的详细解释 “In Law”(在分布上)的含义 定义: 如果 { Y n } \{Y_n\} …

[产品管理-19]:NPDP新产品开发 - 17 - 产品设计与开发工具 - 实体化设计工具:联合分析、功能分析、FAST技术图和逆向工程

目录 前言: 一、什么是实体化设计 1.1 什么是实体化设计 1、定义与概述 2、设计流程 3、关键要素 4、应用领域 5、举例说明 1.2 实体化设计与概念设计的区别 实体化设计 概念设计 区别归纳 1.3 实体化设计与初步设计、规格设计的区别 1、定义与目的 …

从搜索热度上看Arcgis的衰退

Arcgis已被qgis快速赶上 google trends是一个google综合了每日的搜索情况的统计网站,可以追踪从2004年开始各个关键字的搜索热度。 我用arcgis和qgis作为对比,简单探索了arcgis和qgis的全球相关热度。 假设,搜索arcgis越高的区域&#xff…