• 一个用于翻译 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)
    
    

      ‍

  • 相关阅读:
    深挖 Python 元组 pt.2
    pyspark常用语法
    实验室信息化建设的基本内容
    ubuntu utopic unicorn static ip
    67个团建游戏
    【JavaSE】类与对象(上)类是什么?对象是什么?
    经典机器学习方法(3)—— 多层感知机
    大厂常见面试题LRU算法实现
    【图像处理:OpenCV-Python基础操作】
    进口猫罐头在排行榜中是否靠前?排行榜中靠前的猫罐头测评
  • 原文地址:https://blog.csdn.net/XXokok/article/details/142268762