You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中通过Google Translate API传入多文本输入?

如何用Python的urllib向Google Translate API传递多文本输入

我懂你这种困惑——用urllib调用API的时候,单个q参数好处理,但多个文本就容易卡壳。其实核心就是正确构建包含多个查询参数的请求,下面给你两种可行的方案,适配不同场景:

方案1:GET请求传递多个q参数

Google Translate API允许在GET请求里重复q参数来传递多段文本。用urllib.parse.urlencode的时候,只要把q的值设为列表,并加上doseq=True参数,就能自动生成多个q=xxx的查询串。

示例代码:

import urllib.request
import urllib.parse
import json

# 配置参数
API_KEY = "你的Google API密钥"
TARGET_LANG = "zh"
texts_to_translate = ["Hello world", "Python is great", "I love coding"]

# 构建查询参数
params = {
    "q": texts_to_translate,
    "target": TARGET_LANG,
    "key": API_KEY
}
# 注意这里必须加doseq=True,否则列表会被转成字符串
encoded_params = urllib.parse.urlencode(params, doseq=True)
url = f"https://translation.googleapis.com/language/translate/v2?{encoded_params}"

# 发送请求
opener = urllib.request.build_opener()
response = opener.open(url)
result = json.loads(response.read().decode())

# 解析结果
for idx, translation in enumerate(result["data"]["translations"]):
    print(f"原文: {texts_to_translate[idx]}")
    print(f"译文: {translation['translatedText']}\n")

方案2:POST请求传递多文本(更适合长文本)

如果你的文本内容较长,GET请求的URL长度限制可能会出问题,这时候用POST请求更稳妥。我们可以把参数以JSON格式放在请求体里,q同样设为列表:

示例代码:

import urllib.request
import json

API_KEY = "你的Google API密钥"
TARGET_LANG = "zh"
texts_to_translate = ["Hello world", "Python is great", "I love coding"]

# 构建JSON请求体
payload = {
    "q": texts_to_translate,
    "target": TARGET_LANG,
    "key": API_KEY
}
json_payload = json.dumps(payload).encode("utf-8")

# 创建请求对象,设置头部和请求体
url = "https://translation.googleapis.com/language/translate/v2"
request = urllib.request.Request(url, data=json_payload, method="POST")
request.add_header("Content-Type", "application/json; charset=utf-8")

# 发送请求
opener = urllib.request.build_opener()
response = opener.open(request)
result = json.loads(response.read().decode())

# 解析结果
for idx, translation in enumerate(result["data"]["translations"]):
    print(f"原文: {texts_to_translate[idx]}")
    print(f"译文: {translation['translatedText']}\n")

关键注意点

  • 一定要替换成你自己有效的Google API密钥,否则请求会返回权限错误。
  • 如果用GET方式,doseq=True是核心——没有它的话,列表会被转成类似q=[text1,text2]的字符串,API无法识别。
  • POST方式的请求体必须是JSON格式,并且要设置正确的Content-Type头部,否则API会拒绝处理。

内容的提问来源于stack exchange,提问作者Nandan Bhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:05:49