Django Fan
Форматирование строк или "Что означает %s в python?"

- Опубликовано:
- Теги: python
Недавно узнал, что блог время от времени находят по запросу «что означает %s в python». Вспоминаю себя – когда я начинал изучать Python, мне хотелось быстрых и понятных ответов (мол, «не морочь голову, пальцем покажи»). Для таких нетерпеливых эта статья.
Для начала несколько примеров
Теперь вкратце как работает оператор %
Выражение форматирования можно условно разделить на три части:
Обозначения %s, %d, %g и т. п. — это форматы типов данных. Если вы знакомы с языком Си, то это тот же синтаксис, что используется для вывода на печать printf() .
Спецификации различных типов данных Python приведены в следующей таблице:
| Формат | Значение |
|---|---|
| ‘d’ | Целое десятичное число. |
| ‘i’ | Целое десятичное число. |
| ‘o’ | Восьмеричное число. |
| ‘u’ | Устаревший тип – то же что ‘d’ . |
| ‘x’ | Шестнадцатеричное число (нижний регистр). |
| ‘X’ | Шестнадцатеричное число (верхний регистр). |
| ‘e’ | Вещественное число в экспоненциальном виде (нижний регистр). |
| ‘E’ | Вещественное число в экспоненциальном виде (верхний регистр). |
| ‘f’ | Вещественное число в десятичном виде. |
| ‘F’ | Вещественное число в десятичном виде. |
| ‘g’ | Вещественное число. Использует формат ‘f’ или ‘e’ в нижнем регистре. |
| ‘G’ | Вещественное число. Использует формат ‘F’ или ‘E’ в верхнем регистре. |
| ‘c’ | Один символ (или цифра). |
| ‘r’ | Строка, в которую любой объект Python конвертируется с помощью repr(). |
| ‘s’ | Строка, в которую любой объект Python конвертируется с помощью str(). |
| ‘%’ | Аргумент не конвертируется, выводится просто символ ‘%’ . |
Встроенная функция format()
В строке «поля для замены» заключаются в фигурные скобки <> . Все, что не заключено в скобки, воспринимается как обычный текст, которые копируется в неизменном виде. Чтобы передать в тексте символы фигурных скобок, их дублируют: << и >> .
Поля для замены форматируются следующим образом:
где
Записывается так:
Как видите, этот способ гораздо гибче оператора ‘%’, так как одни и те же значения мы можем использовать повторно и в любом порядке. Также можно передать именованные аргументы, и тогда обращаться к ним будем не по номерам, а по именам.
str (строка)
Строки относятся к неизменяемым последовательностям.
Начиная с +py3.0 имеется в виду последовательность кодовых точек Unicode (соответствует типу unicode в предыдущих версиях Python).
До -py3.0 последовательность представляла из себя строку байт (поддерживает ASCII).
Строковые литералы могут быть записаны разными способами:
Строковые литералы, содержащие промеж себя только пробел объединяются в единую строку:
Приведение к строке
Другие типы могут быть приведены к строке при помощи конструктора str() : str(obj) .
Таким образом можно получить «неформальное» строковое представление объектов. Для пользовательских типов такое представление может быть определено в специализированном методе __str__.
В случае, если получить строковое представление не удалось, производится попытка получить «формальное» представление (см. repr).
Что означает% s в строке формата python?
Что означает %s в Python? И что делает следующий фрагмент кода?
Это синтаксис форматирования строки (который он заимствует из C).
Python поддерживает форматирование значений в строки. Хотя это может включать в себя очень сложные выражения, основное использование заключается в вставке значений в строку с заполнителем %s .
Изменить: Вот действительно простой пример:
Токен %s позволяет мне вставить (и потенциально отформатировать) строку. Обратите внимание, что токен %s заменяется тем, что я передаю строке после символа % . Также обратите внимание, что здесь я также использую кортеж (когда у вас есть только одна строка, использование кортежа необязательно), чтобы проиллюстрировать, что несколько строк могут быть вставлены и отформатированы в одном выражении.
Эндрю ответ хороший.
И только для того, чтобы помочь вам немного больше, вот как вы используете несколько форматирования в одной строке
Если вы используете int вместо строки, используйте% d вместо% s.
Метод format был представлен в Python 2.6. Это более способно и не намного сложнее в использовании:
%s указывает тип преобразования строки при использовании возможностей форматирования строки python. В частности, %s преобразует указанное значение в строку с помощью функции str() . Сравните это с типом преобразования %r который использует функцию repr() для преобразования значения.
В ответ на ваш второй вопрос: что делает этот код?…
Это довольно стандартный код проверки ошибок для Python script, который принимает аргументы командной строки.
Итак, первый оператор if переводит: если вы не передали мне аргумент, я расскажу вам, как вы должны передать мне аргумент в будущем, например. вы увидите это на экране:
Следующий оператор if проверяет, действительно ли существует “имя базы данных”, которое вы передали в script в файловой системе. Если нет, вы получите следующее сообщение:
argv [0] – это имя script (это зависит от операционной системы: это полный путь или нет). Если команда была выполнена с использованием -c параметр командной строки для интерпретатор, argv [0] установлен на string ‘-c’. Если имя script не было переданный интерпретатору Python, argv [0] – пустая строка.
%s и %d являются спецификаторами форматирования или местозаполнителями для форматирования строк/десятичных чисел/чисел с плавающей запятой и т.д.
Наиболее часто используемый спецификатор формата:
%d : десятичные дроби
% s известен как спецификатор формата, в частности для строк. Поскольку обсуждение типов данных
продолжается в этой книге, вы смотрите на несколько больше, каждый из которых соответствует данному типу данных.
Каждый спецификатор действует как заполнитель для этого типа в строке; и после строки символ% наружу
строки указывает, что после него все значения, которые нужно вставить в спецификатор формата, будут
представленный там для использования в строке.
Вы можете заметить круглые скобки. Это говорит строке, что она должна ожидать увидеть последовательность, которая
содержит значения, которые будут использоваться строкой для заполнения спецификаторов формата.
Более простой способ подумать об этом состоит в том, чтобы представить, что% s – это ящик для хранения, который содержит значение в
круглые скобки. Если вы хотите сделать больше одного значения, вы просто добавите другой спецификатор формата,
таким образом:
” → > ” John% s% s “% (” Every “,” Man “)
John Everyman ‘