使用googletrans库翻译至英文时遇TypeError问题求助
解决googletrans库Translator初始化报错问题
问题概述
使用googletrans库进行文本翻译时触发TypeError,报错信息显示:
TypeError: Translator.__init__() missing 1 required positional argument: 'to_lang'
同时尝试textblob库也出现翻译错误。
报错原因
出现这个错误是因为安装的并非官方维护的googletrans包,而是第三方衍生版本(如googletrans-new或旧分支版本),这类版本的Translator类初始化时强制要求传入to_lang参数,和官方版的API规范不一致。
修复步骤
- 卸载错误版本的相关包
pip uninstall googletrans googletrans-new -y
- 安装官方正版的googletrans测试版本(该版本兼容性和稳定性较好)
pip install googletrans==4.0.0-rc1
- 修正代码中的两个问题:
- 确保
text_to_predict和target_language变量定义在函数调用之前 - 保持
Translator()无参初始化的正确写法
- 确保
修正后的完整代码
from sklearn.feature_extraction.text import CountVectorizer from sklearn.preprocessing import LabelEncoder from googletrans import Translator # 假设CV、model、label是已训练好的语言检测模型相关对象 CV = CountVectorizer() model = None # 替换为你的训练好的模型 label = LabelEncoder() def predict_and_translate(text, target_language='en'): if isinstance(text, str): # 检查输入是否为字符串,是则转为列表 text = [text] # 将文本转为数值表示 X = CV.transform(text).toarray() # 预测语言 output = model.predict(X) predicted_language = label.inverse_transform(output)[0] print('Detected language:', predicted_language) # 逐句翻译 translated_sentences = [] translator = Translator() # 正确的初始化方式 for sentence in text: try: translation = translator.translate(sentence, dest=target_language) translated_sentences.append(translation.text) except Exception as e: print(f"Translation failed: {e}") print(f'Translated text to {target_language}: {translated_sentences}') # 变量定义要在函数调用之前 text_to_predict = "Bonjour mes amis, comment allez-vous?" target_language = 'en' # English predict_and_translate(text_to_predict, target_language)
额外说明
如果使用textblob也遇到错误,大概率是因为缺少nltk的语料库,可通过以下命令安装:
pip install textblob python -m textblob.download_corpora
内容的提问来源于stack exchange,提问作者Shivali
相关产品推荐
相关产品推荐

