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

使用Pandas+GoogleTrans翻译DataFrame嵌套字典文本列报错求助

问题分析

报错的核心原因是googletrans的translate()方法无法直接处理字典、列表这类嵌套结构,而且当翻译请求返回None(比如空字符串、网络异常)时,调用.text属性就会触发AttributeError。

解决方案

需要编写一个递归函数,遍历嵌套结构里的所有字符串进行翻译,同时处理空值和异常情况:

import pandas as pd
from googletrans import Translator
import time  # 可选,用于添加延迟避免接口限制

translator = Translator()

def translate_nested(obj, dest='en'):
    # 处理字符串:空串直接返回,非空串尝试翻译
    if isinstance(obj, str):
        if not obj.strip():
            return obj
        try:
            # 可选:加延迟,避免频繁请求被限制
            time.sleep(0.5)
            trans_result = translator.translate(obj, dest=dest)
            return trans_result.text if trans_result else obj
        except Exception:
            # 翻译失败时返回原字符串
            return obj
    # 处理列表:递归翻译每个元素
    elif isinstance(obj, list):
        return [translate_nested(item, dest) for item in obj]
    # 处理字典:递归翻译每个值
    elif isinstance(obj, dict):
        return {key: translate_nested(value, dest) for key, value in obj.items()}
    # 其他类型直接返回
    else:
        return obj

# 应用到DataFrame的text列
df['text2'] = df['text'].apply(translate_nested)
关键说明
  • 递归遍历:自动处理字典里的列表、嵌套字典等多层结构,只针对字符串做翻译
  • 异常防护:捕获翻译过程中的网络问题、接口限制等异常,保证程序不崩溃
  • 空值处理:跳过空字符串的翻译,避免无效请求
  • 延迟控制:可选添加time.sleep(),防止短时间内请求过多被翻译接口限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:28:27