如何向Depth L API发出一个python请求?

How to make a python request to deepL API?(如何向Depth L API发出一个python请求?)
本文介绍了如何向Depth L API发出一个python请求?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个用于使用DeepL API进行翻译的Python脚本。我已尝试发出请求,但它响应了HTTP错误400(错误请求)。

以下是我用XXX替换真实身份验证密钥的脚本代码:

import requests

url = "https://api.deepl.com"

auth_key = {
    'host' : "https://api.deepl.com/v2/translate?",
    'auth_key':"auth_key=XXX"
}

querystring = {
    "text" : "Che bellissima giornata",
    "target_lang" : "en"
}

response = requests.request("POST", url, headers=auth_key, data=querystring)

print(response)
print(response.text)

推荐答案

编辑:DeepL Python Library

我以前没有意识到这一点,但是DeepL有一个可以用来进行文本和文档翻译的Python包,它比通过requests包要容易得多。其中一些内容是从DeepL文档中回收的,但已更新以回答您的问题。

首先,运行简单的pip install deepl

如果您不关心对auth_key进行硬编码,可以这样设置:

import deepl

translator = deepl.Translator("auth_key")

要翻译单个字符串,您可以执行以下操作:

import deepl

result = translator.translate_text("Che bellissima giornata", target_lang="EN-US")
print(result)

您现在还可以通过将字符串放在列表中来在DeepL请求中传递多个字符串:

import deepl

result = translator.translate_text(["お元気ですか?", "Che bellissima giornata"], target_lang="EN-US")
print(result[0].text)  # "How are you?"
print(result[0].detected_source_lang)  # "JA"
print(result[1].text)  # "What a beautiful day"
print(result[1].detected_source_lang)  # "IT"

如果您有想要翻译的完整外语文档,也可以使用DeepL包提出请求:

translator.translate_document_from_filepath(
    "path/to/write/to/WhatABeautifulDay.docx", # Translated File
    "path/to/original/CheBellissimaGiornata.docx", # Original File
    target_lang="EN-US"
)

仅作为附注,DeepL";en";选项已弃用,您现在必须在请求中使用";en-US";或";en-GB";。


过时(仍适用于文本)

为了获得正确的响应,您需要按如下方式组织查询:

import requests
r = requests.post(
                url="https://api.deepl.com/v2/translate",
                data={
                    "target_lang": "EN",
                    "auth_key": auth_key,
                    "text": string_to_translate,
                },
            )

其中auth_key是您的身份验证密钥,string_to_translate是要翻译的文本。

我使用black格式化了上面的代码,这就是它看起来与dwightkschruteIII包含的代码不同的原因,尽管它实际上做的是相同的事情。

但是,要使用python访问此翻译,您需要使用以下代码:

r.json()["translations"][0]["text"]

因为DeepL将返回一个以translations为唯一键的json,并返回一个包含另一个json作为相应值的列表。列表中的json有两个键:detected_source_languagetext。这是一个冗长的解释,所以我提供了以下示例:

命令:

sample = requests.post(url="https://api.deepl.com/v2/translate", data={"target_lang": "EN", "auth_key": auth_key, "text": "Che bellissima giornata"})

print(sample.json())

返回:

{'translations': [{'detected_source_language': 'IT', 'text': 'What a beautiful day'}]}

重申一下,您必须使用sample.json()["translations"][0]["text"]访问翻译,其中Sample是您为响应命名的任何名称,并且是获得成功请求的第一个代码块。

这篇关于如何向Depth L API发出一个python请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)