Анимация
JavaScript
|
Главная Библионтека Оператор форматирования Оператор % с объектом-строкой (string или unicode) в качестве левого аргумента имеет особое значение. Он воспринимает левый аргумент как строку формата, которую необходимо применить к правому аргументу (аналогично функции sprintf() в С), и возвращает полученную в результате форматирования строку. Правый аргумент должен быть кортежем, содержащим по одному элементу на каждый аргумент, требуемый строкой формата. Если строке формата необходим один аргумент, правым аргументом оператора % может быть также требуемый строкой фор- дцатеричных цифр соответственно (на платформах с 8-битным типом char используются только младшие 8 бит). В отличие от стандарта C, все нераспознанные управляющие последовательности остаются в строке (включая символ обратной косой черты). Такое поведение очень удобно при отладке. Перед открывающей кавычкой (или группой из трех кавычек) в строковом литерале может быть указана буква r или R. Такие строки называют "необрабатываемыми", для них используются другие правила обработки управляющих последовательностей: строка всегда будет состоять из тех символов, которые записаны между открывающей и закрывающей кавычками (или группами кавычек). Так, r"\n" даст строку, состоящую из двух символов - обратной косой черты и латинской буквы n, r"\"" также является правильным строковым литералом и представляет строку, состоящую из символов обратной косой черты и двойной кавычки. Обратите внимание, что строка не может заканчиваться на нечетное количество символов обратной косой черты: последний из них образует с закрывающей кавычкой управляющую последовательность. Например, r"\" не является правильным строковым литералом. Несколько следующих друг за другом строковых литералов, возможно разделенных символами пропуска (whitespace), использующие различную запись (заключены в различные кавычки; обычные строки и необрабатываемые), автоматически объединяются. Таким образом, строка Привет "всем" является эквивалентом строки Привет-всем. Строки объединяются даже в том случае, если одна из них является обычной строкой, а другая строкой Unicode (a ub == uab). Эта особенность позволяет уменьшить количество используемых символов обратной косой черты при записи длинного строкового литерала в несколько строк программного кода и даже снабдить части строк комментариями: re.compile("[A-Za-z ]" # буква или символ # подчеркивания "[A-Za-z0-9 ]*" # буква, цифра или символ # подчеркивания Заметим, что объединение строковых литералов выполняется в момент компиляции, в то время как оператор + объединяет строки во время выполнения программы. Следующие два необязательных параметра - минимальная ширина поля и точность. Если представление значения содержит меньше символов, чем ширина поля, то оно будет дополнено пробелами (нулями). Точность задает минимальное количество цифр при использовании форматов d , i , o , u , x и X (по умолчанию 1), число цифр после десятичной точки для форматов e , E и f (по умолчанию 6), максимальное количество значащих цифр для форматов g и G (по умолчанию 6; 0 воспринимается как 1), максимальное количество символов из строки для формата s игнорируется. Вместо того, чтобы прямо указывать ширину поля и/или точность, Вы можете использовать символ * . В этом случае соответствующее целое значение передается в кортеже аргументов: >>> import math >>> R = 1 >>> print "Длина окружности равна %*.*f" % ( ... 5, # Ширина поля ... 2, # Точность ... 2*math.pi*R) # Форматируемое число Длина окружности равна 6.2 8 4Кортеж в этом случае должен содержать один элемент. 5Перед символом формата может быть также указан модификатор длины (h, l или L), однако он игнорируется. мата объект, если он не является кортежем4. Строка форматирования может содержать обычные символы (кроме символа %), которые копируются без изменения, и описания формата. Каждое описание формата имеет вид: %[флаг. . . ][ширина][. точность]символ формата5. После символа % могут быть указаны следующие флаги: Флаг Назначение # Используется альтернативное представление аргумента. Для форматов o, x и X результат будет начинаться с 0 , 0x и 0X соответственно. При использовании форматов f, g и G результат всегда будет содержать десятичную точку, даже если после нее не следует не одной цифры. Кроме того, для форматов g и G из результата не будут удалены завершающие нули. В остальных случаях результат остается неизменным. 0 Результат заполняется слева нулями до нужной ширины поля. Для s - и % -форматов игнорируется. - Результат выравнивается влево (по умолчанию результат выравнивается вправо). пробел Перед положительным числом вставляется пробел при использовании знаковых форматов. + Перед числом всегда ставится знак (+ или - ) при использовании знаковых форматов. Отрицательная ширина поля воспринимается как флаг - и следующее за ним положительное число. Если значение после . не указано или оно отрицательное, точность считается равной нулю. Интерпретатор Python поддерживает следующие символы формата: Символ Назначение d, i Десятичное представление целого числа (знакового) o Восьмеричное представление целого числа без знака u Десятичное представление целого числа без знака x Шестнадцатеричное представление целого числа без знака. Используются буквы в нижнем регистре (abcdef ). X Шестнадцатеричное представление целого числа без знака. Используются буквы в верхнем регистре (abcdef). e Экспоненциальное представление вещественного числа. Экспоненциальная часть обозначается буквой e . E Экспоненциальное представление вещественного числа. Экспоненциальная часть обозначается буквой E . f Представление вещественного числа. Если точность равна 0, десятичная точка не используется. Во избежание вывода бесконечных строк бессмысленных цифр, точность ограничена числом 50. g Если порядок вещественного числа меньше -4 или больше или равен точности, используется e -формат, в противном случае используется f -формат. Завершающие нули из дробной части удаляются. G Если порядок вещественного числа меньше -4 или больше или равен точности, используется E -формат, в противном случае используется f -формат. Завершающие нули из дробной части удаляются. r Строковое представление объекта, полученное аналогично применению встроенной функции repr(). Поддерживается, начиная с версии 1.6. s Вставка строки или строкового представления объекта, полученного аналогично применению встроенной функции str() . % Символ % . Если тип значения для ширины поля или точности не является int (при использовании *), генерируется исключение TypeError. Остальные аргументы, не являющиеся строками и тип которых не соответствует используемому формату, интерпретатор пытается привести к необходимому типу с помощью соответствующих встроенных функций. Если это не удается, то генерируется исключение TypeError (для встроенных типов) или AttributeError (для объектов типа instance). В качестве правого аргумента оператора % можно использовать словарь (или любое другое отображение). В этом случае описания формата сразу после символа % должны 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 [ 40 ] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |