Google Translate выводит HTML-объекты в Python 3 - PullRequest
0 голосов
/ 19 октября 2018

Когда я пытаюсь записать французские символы в файл, некоторые символы выглядят так:

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.

Пожалуйста, не обращайте внимания на то, что я перевожу список строк вместо строк.Я тестировал отправку пакетных запросов.

1 Ответ

0 голосов
/ 19 октября 2018

РЕДАКТИРОВАТЬ


ОК, как и ожидалось, проблема была со строками, а не с генерацией субтитров.

API Google Translate указывает, что по умолчаниюего вывод в 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))

И это очень хорошо показало апостроф.

Вы должны проверить содержимое подпрограмм и исходный текст, используемый в функции разбора.С большой вероятностью проблема заключается в исходном тексте, а не в печати на python, поскольку в процессе написания нет ничего, что автоматически превращало бы символы в сущности HTML.

...