Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 352

>>> re.findall(pat, mammoth)

['queen', 'quietly', 'beau', 'queen', 'squeeze', 'queen']

Глава 7. Работаем с данными профессионально

457

Что это показывает? Среди всего прочего, что регулярные выражения могут

сделать многое, но их может быть очень трудно написать правильно.

12. Используйте метод unhexlify для того, чтобы преобразовать эту шестнадцате-

ричную строку (созданную путем объединения двух строк, что позволило ей

разместиться на странице) в переменную типа bytes с именем gif:

'47494638396101000100800000000000ffffff21f9' +

'0401000000002c000000000100010000020144003b'

>>> import binascii

>>> hex_str = '47494638396101000100800000000000ffffff21f9' + \

... '0401000000002c000000000100010000020144003b'

>>> gif = binascii.unhexlify(hex_str)

>>> len(gif)

42

13. Байты, содержащиеся в переменной gif, определяют однопиксельный прозрач-

ный GIF-файл. Этот формат является одним из самых распространенных.

Корректный файл формата GIF начинается со строки GIF89a. Является ли этот

файл корректным?

>>> gif[:6] == b'GIF89a'

True

Обратите внимание на то, что нам нужно использовать b, чтобы указать, что

строка состоит из байтов, а не из символов Unicode. Вы можете сравнить байты

с байтами, но не можете сравнивать байты и символы:

>>> gif[:6] == 'GIF89a'

False

>>> type(gif)

<class 'bytes'>

>>> type('GIF89a')

<class 'str'>

>>> type(b'GIF89a')

<class 'bytes'>

14. Ширина файла формата GIF является шестнадцатибитным целым числом с об-

ратным порядком байтов, которое начинается со смещения 6 байт. Его высота

имеет такой же размер и начинается со смещения 8 байт. Извлеките и выведите

на экран эти значения для переменной gif. Равны ли они 1?

>>> import struct

>>> width, height = struct.unpack('<HH', gif[6:10])

>>> width, height

(1, 1)

458

Приложение Д. Ответы к упражнениям

Глава 8. Данные должны куда-то попадать

1. Присвойте строку 'This is a test of the emergency text system' переменной test1

и запишите переменную test1 в файл с именем test.txt:

>>> test1 = 'This is a test of the emergency text system'

>>> len(test1)

43