Изучаем Python. №8. работа с форматами типов данных. Или что такое %s, %d и т.д в Python


Столкнулся с такой проблемой разбирая чужой код и смотря лекции, где не все лекторы считали нужным объяснять все тонкости синтаксися, считая, что они и так очевидны, хотя на самом деле это не так.

Итак, вы уже столкнулись со странными символами %s. и вроде бы примерно понятно, что это такое, но ясности не хватает. А хочеться чувствовать себя увереней используюя повторно чей-то код с подобными конструкциями.

Разъясняю. Это так заванный оператор %, а символы ‘s’,’d’ и т.д — формат типов данных.

Сразу же приведу табличку этих форматов:

 'd' - Целое десятичное число.
 'i' - Целое десятичное число.
 'o' - Восьмеричное число.
 'u' - Устаревший тип – то же что 'd' .
 'x' - Шестнадцатеричное число (нижний регистр).
 'X' - Шестнадцатеричное число (верхний регистр).
 'e' - Вещественное число в экспоненциальном виде (нижний регистр).
 'E' - Вещественное число в экспоненциальном виде (верхний регистр).
 'f' - Вещественное число в десятичном виде.
 'F' - Вещественное число в десятичном виде.
 'g' - Вещественное число. Использует формат 'f' или 'e' в нижнем регистре.
 'G' - Вещественное число. Использует формат 'F' или 'E' в верхнем регистре.
 'c' - Один символ (или цифра).
 'r' - Строка, в которую любой объект Python конвертируется с помощью repr().
 's' - Строка, в которую любой объект Python конвертируется с помощью str().
 '%' - Аргумент не конвертируется, выводится просто символ '%'.

И немного примеров использования.
№1

>>> 'privet, %s!' % 'User'
'privet, User!'

Усложним:

>>> name = 'Vitaliy'
>>> 'privet, %s' % name
'privet, Vitaliy'

Можно указать размер поля, указав отступ в символах. Один пробел = 2 символа. Указываем 10 символов, это 5 пробелов.
Чтобы отступ был после ‘Vitaliy’, нужно указать ‘%-10s’.

>>> 'privet, %10s' % name
'privet,    Vitaliy'

Вывод целой части числа:

>>> a = 45.32
>>> print '%d' % a
45

Комбинируем:

>>> name = 'Vitaliy'
>>> age = 26
>>> print 'name is: %s, age is: %d.' % (name, age)
name is: Vitaliy, age is: 26.

По сути, это кортеж со строками подстановки:

>>> '%d %s, %d %s' % (6,'popugaev',7,'slonikov')
'6 popugaev, 7 slonikov'

Или список, работа по ключу:

>>> print ('большая %(obj)s весит %(ves)03d кг.' % {"obj": "конфета", "ves": 30})
большая конфета весит 030 кг.

Флаги преобразования:

Флаг| Значение
"#" | Значение будет использовать альтернативную форму.
"0" | Свободное место будет заполнено нулями.
"-" | Свободное место будет заполнено пробелами справа.
" " | Свободное место будет заполнено пробелами справа.
"+" | Свободное место будет заполнено пробелами слева.

Еще немного примеров:

>>> '%.2s' % 'Hello!'
'He'
>>> '%.*s' % ( 2, 'Hello!')
'He'
>>> '%-10d' % 25
'25        '
>>> '%+10f' % 25
'+25.000000'
>>> '%+10s' % 'Hello'
'     Hello'

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

×