谷歌翻译API不会将撇号返回为Python中的撇号

zwl*_*yer 7 python google-translate google-cloud-platform

我正在尝试使用谷歌翻译API,如下所示。'翻译似乎没问题,除了撇号字符作为instaead返回。

有可能解决这些问题吗?我当然可以进行后处理,但我不知道是否还有另一个特殊角色面临同样的问题。

这就是我现在进行翻译的方式:

import pandas as pd
import six
from google.cloud import translate
# Instantiates a client
#translate_client = translate.Client()
"""Translates text into the target language.

Target must be an ISO 639-1 language code.
See https://g.co/cloud/translate/v2/translate-reference#supported_languages
"""
translate_client_en_de = translate.Client(target_language="de")
translate_client_de_en = translate.Client(target_language="en")

target1="de"
target2="en"
#if isinstance(text, six.binary_type):
#    text = text.decode('utf-8')
fname ='fname.tsv'
df = pd.read_table(fname,sep='\t')

for i,row in df.iterrows():
    text =  row['Text']
    de1 = translate_client_en_de.translate(
        text, target_language=target1)
    text2 = de1['translatedText']
    en2 = translate_client_de_en.translate(
        text2, target_language=target2)
    text3 = en2['translatedText']
    print(text)
    print(text2)
    print(text3)
    print('----------')
    break
Run Code Online (Sandbox Code Playgroud)

示例输出:

西蒙拒绝后的建议

西蒙'之后的建议

Abi*_*uez 8

我解决如下:

问题:

问题是您需要指定您使用的是纯文本而不是 HTML 文本。查看此处的文档: https: //googleapis.dev/python/translation/latest/client.html,查找“translate”属性和“format_”参数。

解决方案:

只需添加参数'format_='text'即可。就我而言,我是这样写的:

result = translate_client.translate(text, target_language=target, format_='text')
Run Code Online (Sandbox Code Playgroud)

它运行良好,现在 api 正确返回撇号:

在我收到:“你好,我们已经很长时间没有见面了”。

现在我得到:“你好,我们已经很长时间没见面了”