首页 > 解决方案 > detect_langs 如何使用输出

问题描述

我正在使用 langdetect,它应该返回字符串中某种语言的概率/百分比,类似于英文文本的 [en:0.9999960343803843]。我想检查语言和百分比并将它们存储在变量中以供以后使用,但除了打印它之外我什么也做不了。类型似乎是 <class 'langdetect.language.Language'>

lan="Otec matka syn."
lan=detect_langs(line)
print(lan)
print(type(lan[0]))

此代码输出

[pl:0.7142846922445223, fi:0.2857135474194883]
<class 'langdetect.language.Language'>

注意:这不是 json,因为我尝试过 json.loads(lan[0]) 并且错误说它应该是字符串而不是语言

编辑:正如 user696969 回答的那样,解决方案是将它们保存在字典中

x=detect_langs(line)
lan={}
for lang in x:
    lan.update({lang.lang: lang.prob})

标签: python-3.x

解决方案


由于它们是对象,您可以使用以下代码language.Language将每种语言数据转换为类型dict

from langdetect import detect_langs

line="Otec matka syn."
lan=[{lang.lang: lang.prob} for lang in detect_langs(line)]
print(lan)
print(type(lan[0]))

的预期输出lan将是

[{'fi': 0.8571392823357673}, {'pl': 0.14285943305652865}]

您还可以通过替换将整个语言列表存储到字典中

lan=[{lang.lang: lang.prob} for lang in detect_langs(line)]

lan={lang.lang: lang.prob for lang in detect_langs(line)}

预期的输出将如下所示

{'fi': 0.7142848220971209, 'pl': 0.2857147054811151}

推荐阅读