我遇到一种情况,正在阅读一串文本,我需要检测语言代码(en,de,fr,es等)。
有没有一种简单的方法可以在python中做到这一点?
如果您需要检测语言以响应用户操作,则可以使用google
ajax语言API
:
#!/usr/bin/env python
import json
import urllib, urllib2
def detect_language(text,
userip=None,
referrer="http://stackoverflow.com/q/4545977/4279",
api_key=None):
query = {'q': text.encode('utf-8') if isinstance(text, unicode) else text}
if userip: query.update(userip=userip)
if api_key: query.update(key=api_key)
url = 'https://ajax.googleapis.com/ajax/services/language/detect?v=1.0&%s'%(
urllib.urlencode(query))
request = urllib2.Request(url, None, headers=dict(Referer=referrer))
d = json.load(urllib2.urlopen(request))
if d['responseStatus'] != 200 or u'error' in d['responseData']:
raise IOError(d)
return d['responseData']['language']
print detect_language("Python - can I detect unicode string language code?")
en
v2](http://code.google.com/apis/language/translate/v2/using_rest.html)
默认限制为每天100000个字符(一次不超过5000个)。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import urllib, urllib2
from operator import itemgetter
def detect_language_v2(chunks, api_key):
"""
chunks: either string or sequence of strings
Return list of corresponding language codes
"""
if isinstance(chunks, basestring):
chunks = [chunks]
url = 'https://www.googleapis.com/language/translate/v2'
data = urllib.urlencode(dict(
q=[t.encode('utf-8') if isinstance(t, unicode) else t
for t in chunks],
key=api_key,
target="en"), doseq=1)
# the request length MUST be < 5000
if len(data) > 5000:
raise ValueError("request is too long, see "
"http://code.google.com/apis/language/translate/terms.html")
#NOTE: use POST to allow more than 2K characters
request = urllib2.Request(url, data,
headers={'X-HTTP-Method-Override': 'GET'})
d = json.load(urllib2.urlopen(request))
if u'error' in d:
raise IOError(d)
return map(itemgetter('detectedSourceLanguage'), d['data']['translations'])
现在,您可以请求显式检测语言:
def detect_language_v2(chunks, api_key):
"""
chunks: either string or sequence of strings
Return list of corresponding language codes
"""
if isinstance(chunks, basestring):
chunks = [chunks]
url = 'https://www.googleapis.com/language/translate/v2/detect'
data = urllib.urlencode(dict(
q=[t.encode('utf-8') if isinstance(t, unicode) else t
for t in chunks],
key=api_key), doseq=True)
# the request length MUST be < 5000
if len(data) > 5000:
raise ValueError("request is too long, see "
"http://code.google.com/apis/language/translate/terms.html")
#NOTE: use POST to allow more than 2K characters
request = urllib2.Request(url, data,
headers={'X-HTTP-Method-Override': 'GET'})
d = json.load(urllib2.urlopen(request))
return [sorted(L, key=itemgetter('confidence'))[-1]['language']
for L in d['data']['detections']]
例:
print detect_language_v2(
["Python - can I detect unicode string language code?",
u"матрёшка",
u"打水"], api_key=open('api_key.txt').read().strip())
[u'en', u'ru', u'zh-CN']
本文向大家介绍从PHP中的字符串检测语言,包括了从PHP中的字符串检测语言的使用技巧和注意事项,需要的朋友参考一下 无法从字符类型中检测到语言。还有其他方法,但不能保证完全准确性。'TextLanguageDetect梨包'可以正确使用。以下是相同的示例代码- 示例 输出结果 这将产生以下输出- 它易于使用,并具有52种语言数据库。但是不利的是,使用此软件包无法检测到东亚语言。
本文向大家介绍python 转换 Javascript %u 字符串为python unicode的代码,包括了python 转换 Javascript %u 字符串为python unicode的代码的使用技巧和注意事项,需要的朋友参考一下 web采集的数据为 %u6B63%u5F0F%u4EBA%u5458,需要读取并转换为python对象,想了下不调用Javascript去eval,只能自己
问题内容: 假设我有一个包含Ü的字符串。我将如何找到所有这些unicode字符?我应该测试他们的代码吗?我该怎么做? 例如,给定字符串“AÜXÜ”,我想将其转换为“ AYXY”。我想对其他unicode字符执行相同的操作,并且我不希望将它们存储在某种翻译图中。 问题答案: “ unicode字符”的定义含糊不清,但是将被视为表示标准ISO 8859字符集 未涵盖的UTF-8 字符。如果您的情况是这
问题内容: 在下面查看我的代码。我有一个包含Unicode字符代码的JSON字符串。我将其转换为Java对象,然后将其转换回JSON字符串。但是,您可以看到输入和输出JSON字符串不匹配。是否可以使用Gson将我的对象转换为原始JSON字符串?我想和一样。 问题答案: 不幸的是,Gson似乎不支持它。所有JSON输入/输出分别集中在Gson(从2.8.0开始)和。可以使用其私有方法读取Unicod
本文向大家介绍C语言中字符和字符串处理(ANSI字符和Unicode字符),包括了C语言中字符和字符串处理(ANSI字符和Unicode字符)的使用技巧和注意事项,需要的朋友参考一下 我们知道,C语言用char数据类型表示一个8位的ANSI字符,默认在代码中声明一个字符串时,C编译器会把字符串中的字符转换成由8位char数据类型构成的一个数组: Microsoft的C/C++编译器定义了一个内建的
本文向大家介绍Python语言什么可以迭代,包括了Python语言什么可以迭代的使用技巧和注意事项,需要的朋友参考一下 示例 Iterable可以是任何一项只能逐一接收的项目。内置的Python集合是可迭代的: 生成器返回可迭代项: