当我尝试将法语字符写入文件时,某些字符看起来像
j'ai
我对西班牙语字符没有任何疑问。我可能做错了什么?
"""Translates text into the target language.
Make sure your project is whitelisted.
Target must be an ISO 639-1 language code.
See https://g.co/cloud/translate/v2/translate-reference#supported_languages
"""
from google.cloud import translate
# Instantiates a client
translate_client = translate.Client()
# The target language
target = 'fr'
# Create a list of strings to translate.
test_list = []
new_list = []
for i in range(1) :
test_list.insert(i, 'I said, you know what, something, I\'m going to drop everything else off that I was doing and go through a period of a dry spell just to properly give it a chance when I started using it. ')
# Send 128 items per translation request and concatenate resulting translations into one list. (The max items per request for Google translate is 128.)
concat_result = []
for j in range(0, len(test_list), 128):
new_result = translate_client.translate(
test_list[j:j + 128], target_language=target)
concat_result += new_result
count = 0
for list in concat_result :
print(count, concat_result[count]['translatedText'])
count += 1
打印结果:
0 J'ai dit, vous savez quoi, quelque chose, je vais laisser tomber tout ce que je faisais et traverser une période de sécheresse simplement pour lui donner une chance de bien commencer à l'utiliser.
请忽略我正在翻译字符串列表而不是字符串。我正在测试发送批处理请求。
答案 0 :(得分:1)
编辑
好的,正如预期的那样,问题出在字符串,而不是字幕生成。
Google Translate API指定将其默认输出为HTML。这就是为什么要获取HTML实体而不是原始字符的原因。
您需要在translate方法的调用中指定希望格式为文本而不是HTML。
类似的东西:
translate_client.translate(
test_list[j:j + 128],
target_language=target,
format="text")
您可以在以下位置找到有关参数的更多信息: https://cloud.google.com/translate/docs/reference/translate?hl=ja
以及有关Python API本身的更多详细信息,请在此处阅读其源代码: https://github.com/googleapis/google-cloud-python/blob/master/translate/google/cloud/translate_v2/client.py#L164
编辑结束
在我回答之前,我会给您一些建议,因为您似乎是新来的: 如果您需要代码方面的帮助,则应提供一个完全的工作示例。 当某人没有提供所需的所有上下文和信息时,真的很难帮助他们。
所以,让我们转到答案...
我将从这里开始大胆猜测:
您正在使用位于以下位置的srt库创建字幕文件: https://github.com/cdown/srt
-
我刚刚使用以下代码对其进行了测试:
subtitle_generator = srt.parse('''\
1
00:31:37,894 --> 00:31:39,928
Je m'appelle Francisco
''')
subtitles = list(subtitle_generator)
with open("a_fr.srt" , "w", encoding='utf-8') as f:
f.write(srt.compose(subtitles))
它显示撇号很好。
您应检查subs的内容以及解析功能所使用的原始文本。很有可能是原始文本而不是python打印问题,因为在编写过程中没有任何东西可以自动将字符转换为HTML实体。