Как преобразовать декодирование base64 из python2 в python3 - PullRequest
0 голосов
/ 21 июня 2020

Я работаю над сценарием, который загружает и обрабатывает файлы субтитров. Файлы поставляются в формате gzip, и в документации сказано: use: gzinflate (substr (base64_decode ($ subs_b64_data_from_xmlrp c), 10)). В Python 2 это работает нормально, и я получаю строку, содержащую текст субтитров.

compressed_data = download_data['data'][0]['data'].decode('base64')
sub_text = gzip.GzipFile(fileobj=io.BytesIO(compressed_data)).read()
print(sub_text)

Дает мне эту строку:

841
01:52:28,344 --> 01:52:29,878
Sweet dreams, angel.

842
01:53:44,844 --> 01:53:46,377
I love you, honey.

Поскольку я работаю с python 3 Я изменил .decode ('base64') на base64.b64decode () в соответствии с документацией python 3.

compressed_data = base64.b64decode(download_data['data'][0]['data'])
sub_text = gzip.GzipFile(fileobj=io.BytesIO(compressed_data)).read()
print(sub_text)

Но теперь мои данные заканчиваются как байтовый объект и печатные данные выглядит так:

00:33:30,009\r\ncalled Babies I\r\nDon\'t Care About.\r\n\r\n694\r\n00:33:31,305 --> 00:34:31,557\r\n

Как я могу сделать это правильно в python3, чтобы я тоже получил str?

1 Ответ

1 голос
/ 21 июня 2020

Если sub_text в байтах, вы должны попробовать это ...

print(sub_text.decode('utf-8'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...