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

使用GoogleTrans翻译含英、荷语的DataFrame推文列至纯英文时遇错求助

解决DataFrame推文翻译报错问题

我有一个存储推文的DataFrame,其中text列包含英文和荷兰语推文,想要统一转为纯英文。尝试以下代码后仍报错(错误为JSONDecodeError: Expecting value: line 1 column 1 (char 0)),已更新googletrans包解决NoneType错误,但问题依旧:

from googletrans import Translator
translator = Translator()

df_posts['text_en'] = df_posts['text'].apply(lambda x: translator.translate(x, dest='en').text)

text列源数据包含正常格式的英文推文,无特殊格式问题。

可行解决方案

1. 切换到googletrans稳定候选版本

googletrans主分支存在API兼容性问题,安装4.0.0-rc1版本可解决多数请求错误:

pip install googletrans==4.0.0-rc1

同时添加异常处理与语言检测,避免重复翻译英文、防止单条失败中断任务:

from googletrans import Translator
translator = Translator()

def translate_text(text):
    try:
        detected_lang = translator.detect(text).lang
        if detected_lang == 'en':
            return text
        return translator.translate(text, dest='en').text
    except Exception as e:
        print(f"翻译失败: {text[:50]}... 错误: {str(e)}")
        return text

df_posts['text_en'] = df_posts['text'].apply(translate_text)

2. 改用deep-translator库

如果googletrans仍不稳定,deep-translator对翻译API的兼容性更好,支持多平台:

pip install deep-translator

使用Google翻译的示例代码:

from deep_translator import GoogleTranslator

def translate_text(text):
    try:
        detected_lang = GoogleTranslator(source='auto', target='en').detect(text)
        if detected_lang == 'en':
            return text
        return GoogleTranslator(source='auto', target='en').translate(text)
    except Exception as e:
        print(f"翻译失败: {text[:50]}... 错误: {str(e)}")
        return text

df_posts['text_en'] = df_posts['text'].apply(translate_text)

3. 添加请求延迟避免API限制

频繁请求会触发Google的反爬机制,添加延迟可降低报错概率:

from googletrans import Translator
import time

translator = Translator()

def translate_text(text):
    try:
        detected_lang = translator.detect(text).lang
        if detected_lang == 'en':
            return text
        time.sleep(0.5)  # 每次请求间隔0.5秒
        return translator.translate(text, dest='en').text
    except Exception as e:
        print(f"翻译失败: {text[:50]}... 错误: {str(e)}")
        return text

df_posts['text_en'] = df_posts['text'].apply(translate_text)

内容的提问来源于stack exchange,提问作者Hans.nl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:20:33