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

将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} 编码读取文件成功")
                break
            except UnicodeDecodeError:
                continue
        else:
            print("文件编码无法识别")
            return False
    
        # 将文件以 UTF-8 编码写入到临时文件
        with open(temp_file, 'w', encoding='utf-8') as f:
            f.write(decoded_data)
        return True
    except 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_texts
    except 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)

  ‍

作者:梧六柒

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

发表回复