我有一个用户界面,其中包括德语并将其翻译成英文句子。# -*- coding: utf-8 -*-from googletrans import Translatordef tr(s) translator = Translator() return translator.translate(wordDE,src='de',dest='en').text有时我会从译者那里得到奇怪的字符。例如:CN: Pascal 和 PHP 是面向软件开发人员和工程师的编程语言。googletrans EN(utf8):Pascal 和 PHP 是面向软件开发人员和工程师的编程语言。这就是字符串在 utf8 格式中的外观。当我用 windows textEditor 打开它时,它看起来像这样:googletrans ZH: Pascal 和 PHP 是编程语言——适用于软件开发人员和工程师。正如您在“ for software ”之前看到的那样,是 2 个奇怪的字符,由 translate() 函数返回。这些字符也在“googletrans EN(utf8)”字符串中。您看不到它们,但是当您使用箭头键跳过字符串时,光标不会移动到“ for software ”,单击 2 次。所以角色在那里,但没有看到。(也许你不能在这里做,因为字符串已经从网站格式化)有时还会出现翻译后看不到的其他字符。我需要消除这个字符。我不能只使用 ascii,因为我还需要在 txt 文件中保护像“ ö,ä,ü,ß ”这样的德语字符。这可能只是我不理解的编码问题还是那里有什么问题?
1 回答

慕码人2483693
TA贡献1860条经验 获得超9个赞
翻译后的文本包含两个嵌入的零宽度空格 ( \u200b') 字符。
>>> res = t.translate(wordDE, src='de', dest='en').text
>>> res
'Pascal and PHP are programming languages \u200b\u200bfor software developers and engineers.'
文本编辑器似乎将文件解码为 cp1252 (或类似的 MS 8 位编码),因此mojibake:
>>> res.encode('utf-8').decode('cp1252')
'Pascal and PHP are programming languages ​​for software developers and engineers.'
这是Google Translate API 的一个已知错误。等待修复,您可以使用str.replace创建一个不包含这些字符的新字符串:
>>> new_res = res.replace('\u200b', '')
>>> new_res
'Pascal and PHP are programming languages for software developers and engineers.'
添加回答
举报
0/150
提交
取消