【发布时间】:2018-11-05 07:01:48
【问题描述】:
我的 Python 脚本有问题。我只是尝试用谷歌翻译 API 翻译一些句子。有些句子在特殊的 UTF-8 编码(如 ä、ö 或 ü)上存在问题。无法想象为什么有些句子有效,有些则无效。
如果我直接在浏览器中尝试 API 调用,它可以工作,但在我的 Python 脚本中,我得到了一个不匹配的结果。
这是我的脚本的一个小版本,它直接显示错误:
# -*- encoding: utf-8' -*-
import requests
import json
satz="Beneath the moonlight glints a tiny fragment of silver, a fraction of a line…"
url = 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=de&dt=t&q='+satz
r = requests.get(url);
r.text.encode().decode('utf8','ignore')
n = json.loads(r.text);
i = 0
while i < len(n[0]):
newLine = n[0][i][0]
print(newLine)
i=i+1
这是我的结果的样子:
Unter dem Mondschein glänzt ein winziges Silberfragment, ein Bruchteil einer Li
nie â ? |
【问题讨论】:
-
您不需要编码然后再次解码。默认为 UTF-8 无论如何。
-
该行可以完全删除,因为您忽略了返回值。
r.text值不受影响。无论如何你都应该使用r.json()。 -
我确实可以重现该问题,但它是 Google 方面的问题,而不是您的 Python 代码。您正在享用 Mojibake。
-
@MartijnPieters 所以没有办法解决这个mojibake?我的意思是,如果我访问链接translate.googleapis.com/translate_a/…,月光会闪烁一小片银色,只有一行的一小部分……”在我的浏览器中,我得到一个没有 mojibake 的文本文件
-
啊,我们可能正在做一些事情,因为您的浏览器不只是发送该 URL(其中包含空格);它还负责将您的文本编码为 URL 引用的数据。我会再试一试。
标签: python python-3.x python-requests mojibake