为了账号安全,请及时绑定邮箱和手机立即绑定

Python googletrans 编码奇怪的字符

Python googletrans 编码奇怪的字符

千巷猫影 2022-01-18 17:20:18
我有一个用户界面,其中包括德语并将其翻译成英文句子。# -*- 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.'


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号