Python调用googletrans翻译时translate()缺失text参数等错误问询
报错原因及解决方法
报错原因
- 第一种报错
translate() missing 1 required positional argument: 'text'
存在两个问题:一是调用apply时直接执行了translator.translate()方法,没有把Series的每个元素作为待翻译文本传入方法;二是参数名错误,googletrans的translate方法源语言参数为src、目标语言参数为dest,并非你写的lang_src、lang_tgt,参数传递错误导致方法识别不到待翻译的text入参。 - 第二种报错
'NoneType' object has no attribute 'group'
存在两个问题:一是translator.translate()不支持直接传入pandas Series对象作为翻译输入;二是默认安装的googletrans版本(通常为4.0.0rc1)存在接口兼容问题,谷歌翻译接口返回结构变更后旧版本无法正常解析,返回空值后触发属性调用报错。
修复方案
第一步:安装兼容的googletrans版本
卸载原有版本后安装稳定适配版:
pip uninstall googletrans -y pip install googletrans==3.1.0a0
第二步:修改批量翻译代码
通过apply逐行传入待翻译文本,增加异常捕获避免个别请求失败中断任务,同时支持批量生成三个目标语言的翻译结果:
import googletrans from googletrans import Translator import pandas as pd # 初始化翻译器,设置超时避免请求挂起 translator = Translator(timeout=10) # 注意你的数据集列名为English Test,不要和示例代码里的列名写混 # 定义通用翻译函数 def translate_text(text, src_lang='en', dest_lang='ms'): try: result = translator.translate(text, src=src_lang, dest=dest_lang) return result.text except Exception as e: print(f"翻译失败内容:{text},错误信息:{e}") return None # 批量生成三种语言翻译结果 df['马来语翻译'] = df['English Test'].apply(translate_text, dest_lang='ms') df['西班牙语翻译'] = df['English Test'].apply(translate_text, dest_lang='es') df['俄语翻译'] = df['English Test'].apply(translate_text, dest_lang='ru')
内容的提问来源于stack exchange,提问作者user16795956
相关产品推荐
相关产品推荐

