gpt4 book ai didi

python - 如何解码字符串以与 Google 语言检测 API 一起使用?

转载 作者:行者123 更新时间:2023-11-30 23:57:03 24 4
gpt4 key购买 nike

我想使用Google Language Detection API在我的应用程序中检测 url 参数的语言。例如用户请求 url

http://myapp.com/q?Это тест

并收到消息“俄语”。我这样做:

def get(self):                                            
url = "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q="+self.request.query
try:
data = json.loads(urllib2.urlopen(url).read())
self.response.out.write('<html><body>' + data["responseData"]["language"] +'</body></html>')
except urllib2.HTTPError, e:
self.response.out.write( "HTTP error: %d" % e.code )
except urllib2.URLError, e:
self.response.out.write( "Network error: %s" % e.reason.args[1])

但总是得到“English”结果,因为 url 是用

编码的

http://myapp.com/q?%DD%F2%EE%20%F2%E5%F1%F2

我尝试过 urllib.quote 、 urllib.urlencode 但没有成功。

如何为 Google Api 解码此网址?

最佳答案

也许urllib.unquote是您正在寻找的:

>>> from urllib import unquote
>>> unquote("%DD%F2%EE%20%F2%E5%F1%F2")

这将为您提供一个字符串,其中的字符采用您在 URL 中使用的任何编码。如果要将其重新编码为不同的编码(例如 UTF-8),则必须创建 unicode首先对象,然后使用encode unicode的方法对象重新编码:

>>> from urllib import unquote, quote
>>> import json, urllib2, pprint
>>> decoded = unicode(unquote("%DD%F2%EE%20%F2%E5%F1%F2"), "windows-1251")
>>> print decoded
Это тест
>>> recoded = decoded.encode("utf-8")

此时,我们已经有了一个 UTF-8 编码的字符串,但这仍然不适合传递给 Google 语言检测 API:

>>> recoded
'\xd0\xad\xd1\x82\xd0\xbe \xd1\x82\xd0\xb5\xd1\x81\xd1\x82'

由于您希望将此字符串作为查询参数包含在 URL 中,因此必须使用 urllib.quote 对其进行编码:

>>> url = "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=%s" % quote(recoded)
>>> data = json.loads(urllib2.urlopen(url).read())
>>> pprint.pprint(data)
{u'responseData': {u'confidence': 0.094033934,
u'isReliable': False,
u'language': u'ru'},
u'responseDetails': None,
u'responseStatus': 200}

关于python - 如何解码字符串以与 Google 语言检测 API 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com