You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用googletrans翻译数据列报raise_Exception属性错误如何解决

问题现象

翻译pandas数据集中名为Task的列时,使用googletrans库编写翻译逻辑,运行后抛出属性不存在的报错。
复现代码如下:

import pandas as pd
import numpy as np
!pip install googletrans==4.0.0rc1 
from googletrans import Translator
translator = Translator()
df['Spanish'] = df['Task'].apply(translator.translate, src='en', dest='es').apply(getattr, args=('text',))
df

抛出的报错信息:

--> 122         if r.status_code != 200 and self.raise_Exception:
    123             raise Exception('Unexpected status code "{}" from {}'.format(
    124                 r.status_code, self.service_urls))

AttributeError: 'Translator' object has no attribute 'raise_Exception'
故障原因

这个是googletrans==4.0.0rc1预发布版本自带的源码bug:

  • 库的初始化方法中没有定义raise_Exception属性,且存在属性名大小写不一致的问题:初始化时写入的属性为小写开头的raise_exception,但接口请求逻辑中判断状态码时调用的是大写开头的raise_Exception,直接触发属性不存在的错误。
  • 直接用apply无间隔批量调用翻译接口,很容易触发谷歌翻译的频率限制,就算修复属性问题,后续也大概率因为接口返回非200状态码中断运行。
修复步骤
  • 第一步:补全Translator实例缺失的属性,优先选择手动绑定属性的写法,适配该版本的源码逻辑:
    from googletrans import Translator
    translator = Translator()
    # 手动绑定源码中缺失的属性,设置为False避免状态码异常时直接中断
    translator.raise_Exception = False
    
  • 第二步:给批量翻译逻辑加延时,避免触发接口频率限制,不要直接把translator.translate传入apply,封装一层带停顿的翻译函数:
    import time
    import random
    
    def en_to_es(text):
        # 每条翻译间隔0.1-0.3秒随机时长,模拟人工请求
        time.sleep(random.uniform(0.1, 0.3))
        return translator.translate(text, src='en', dest='es').text
    
    df['Spanish'] = df['Task'].apply(en_to_es)
    
  • 补充说明:如果数据量超过1000条,建议每处理100条数据增加一次2-3秒的长停顿,进一步降低被接口拦截的概率。

内容的提问来源于stack exchange,提问作者JohnV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:15:30