使用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
相关产品推荐
相关产品推荐

