Python читает файл в двоичном формате, двоичные данные в строку?

#python #string #binary

#python #строка #двоичный

Вопрос:

Я пытаюсь изучить Python и в настоящее время выполняю некоторые упражнения онлайн. Один из них включает чтение zip-файлов.

Когда я делаю:

 import zipfile
zp=zipfile.ZipFile('MyZip.zip')
print(zp.read('MyText.txt'))
  

он печатает:

 b'Hello World'
  

Я просто хочу строку с «Hello World». Я знаю, что это глупо, но единственный способ, о котором я мог подумать, это сделать:

 import re
re.match("b'(.*)'",zp.read('MyText.txt'))
  

Как я должен это делать?

Комментарии:

1. @John, это делает его «Миром б’Хелло»»

2. Я ошеломлен тем, что это не было помечено как возможный дубликат и закрыто за считанные секунды.

3. Учитывая, что я иногда чувствую, что Python становится слишком сложным и за эти годы появилось слишком много противоречивых способов делать одно и то же, я ужасно рад, что мы трое текстуально дали один и тот же ответ на этот вопрос независимо друг от друга. 🙂

Ответ №1:

Вам нужно декодировать необработанные байты в строке в реальные символы. Попробуйте выполнить .decode('utf-8') значение, из которого вы возвращаетесь zp.read() , перед его печатью.

Комментарии:

1. Спасибо. Кажется, все трое из вас почти готовы к ответу, но вы получили его первым.

Ответ №2:

Сначала вам нужно декодировать байты в текст.

 print(zp.read('MyText.txt').decode('utf-8'))
  

Ответ №3:

Просто расшифруйте байты:

 print(zp.read('MyText.txt').decode('UTF-8'))