我在Windows上的Python 2.7.10中使用textblob
已经有一段时间了,而且出乎意料的是,它停止了工作。使用两个独立的虚拟机以及OS X进行测试会产生相同的错误。
从docs
中测试一个简单的代码段 from textblob import TextBlob
en_blob = TextBlob(u'Simple is better than complex.')
print(en_blob.translate(to='es'))
产生错误:
File "test.py", line 3, in <module> print(en_blob.translate(to='es')) File "C:\Python27\lib\site-packages\textblob\blob.py", line 509, in translate from_lang=from_lang, to_lang=to)) File "C:\Python27\lib\site-packages\textblob\translate.py", line 45, in translate raise NotTranslated('Translation API returned the input string unchanged.') textblob.exceptions.NotTranslated: Translation API returned the input string unchanged.
如何调试此错误?
答案 0 :(得分:4)
正如文档中所提到的,Textblob使用Google Translate API进行翻译。
显然,这个(未记录的)API改变了它的输出格式。我能够用这个片段做一个成功的请求:
import requests
url = 'http://translate.google.com/translate_a/t'
params = {
"text": "Simple is better than complex",
"sl": "en",
"tl": "es",
"client": "p"
}
print(requests.get(url, params=params).content)
>> '"Simple es mejor que complejo"'
在textblob的源代码中,代码表示json
编码方法,但显然Google在这里已经确定简单确实比复杂更好。
答案 1 :(得分:3)
正如@Gijs所述,谷歌翻译API发生了变化。这导致TextBlob的翻译和语言检测功能停止工作。
我已提交PR来解决问题。
答案 2 :(得分:0)
您只需要设置from_lang
参数即可告诉您要翻译的语言:
en_blob = TextBlob(u'Simple is better than complex.')
print(en_blob.translate(from_lang='en', to='es'))
答案 3 :(得分:0)
根据我的经验,引入from_lang
参数并不能解决问题。
我已经修复了它从另一个方面而不是通过textblob调用Google的翻译API的问题。
https://github.com/ssut/py-googletrans