【问题标题】:How to parse answers with deepl api?如何使用 deepl api 解析答案?
【发布时间】:2021-11-06 03:09:10
【问题描述】:

我想将deepl translate api 用于我的大学项目,但我无法解析它。我想将它与 PHP 或 Python 一起使用,因为我将传递给 python 脚本的参数,所以它对我来说无所谓,这将是结束。我在 php 中尝试过这样的:

    $original =  $_GET['searchterm'];
    $deeplTranslateURL='https://api-free.deepl.com/v2/translate?auth_key=MYKEY&text='.urlencode($original).'&target_lang=EN';
    if (get_headers($deeplTranslateURL)[0]=='HTTP/1.1 200 OK') {
        $translated = str_replace(' ', '', json_decode(file_get_contents($deeplTranslateURL))["translations"][0]["text"]);
    }else{
        echo("translate error");
    }

    $output = passthru("python search.py $original $translated");

我也在基于this answersearch.py 中尝试过:

#!/usr/bin/env python
import sys
import requests

r =  requests.post(url='https://api.deepl.com/v2/translate',
                          data = {
                            'target_lang' : 'EN',  
                            'auth_key' : 'MYKEY',
                            'text': str(sys.argv)[1]
                          })

print 'Argument:', sys.argv[1]
print 'Argument List:', str(sys.argv)
print 'translated to: ', str(r.json()["translations"][0]["text"])

但都没有给我任何答案,我该怎么做才能正确?我也知道我可以在cURL 中以某种方式做到这一点,但我从来没有使用过那个库。

【问题讨论】:

  • 您能否提供一个示例,说明您将传入的参数是什么样的?

标签: python php json curl deepl


【解决方案1】:

DeepL 现在有一个python library,这使得使用 python 进行翻译变得更加容易,并且无需使用请求和解析响应。

这样开始:

import deepl
translator = deepl.Translator(auth_key)
result = translator.translate_text(text_you_want_to_translate, target_lang="EN-US")
print(result)

看看你的问题,看起来search.py 可能有几个问题,即 sys 将每个单独的单词分成列表中的一个项目,所以你只将一个单词传递给 DeepL。这是一个问题,因为 DeepL 是一个上下文翻译器:它基于句子中的单词构建翻译——它不只是充当单个单词的字典。如果你想翻译单个单词,DeepL API 可能不是你想要的。

然而,如果你真的想向 DeepL 传递一个句子,我已经构建了这个新的 search.py,它应该适合你:

import sys
import deepl


auth_key="your_auth_key"
translator = deepl.Translator(auth_key)

"""
" ".join(sys.argv[1:]) converts all list items after item [0]
into a string separated by spaces
"""

result = translator.translate_text(" ".join(sys.argv[1:]), target_lang = "EN-US")

print('Argument:', sys.argv[1])
print('Argument List:', str(sys.argv))


print("String to translate: ", " ".join(sys.argv[1:]))
print("Translated String:", result)

我通过输入以下代码运行程序:

search.py Der Künstler wurde mit einem Preis ausgezeichnet.

并收到此输出:

Argument: Der
Argument List: ['search.py', 'Der', 'Künstler', 'wurde', 'mit', 'einem', 
'Preis', 'ausgezeichnet.']
String to translate:  Der Künstler wurde mit einem Preis ausgezeichnet.
Translated String: The artist was awarded a prize.

我希望这会有所帮助,并且离你的大学项目结束不远了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多