#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'))