Рубрики
Без рубрики

4.1 Форматирование строки в Python Part-1

В этом руководстве вы узнаете четыре основных подхода к форматированию строки в Python, а также … Помечено Python, начинающим.

В этом руководстве вы узнаете четыре основных подхода к форматированию строки в Python, а также на их сильные и слабые стороны. Вы также получите простое правило для того, чтобы как выбрать лучший подход форматирования строки общего назначения в своих собственных программах.

Давайте прыгнем прямо, так как у нас много, чтобы покрыть. Для того, чтобы иметь простой пример игрушек для экспериментов, давайте предположим, что у вас есть следующие переменные (или постоянные, действительно) для работы с:

errno = 50159747054
name = 'dev'

Основываясь на этих переменных, вы хотите создать выходную строку, содержащую простое сообщение об ошибке:

'Hii dev, there is a 0xbadc0ffee error!'

Эта ошибка действительно может испортить утро понедельника Dev … Но мы здесь, чтобы обсудить форматирование строки. Так что давайте доберемся до работы.

1. ” Старый стиль “форматирование строки (% оператора)

а) Строки в Python имеют уникальную встроенную работу, которую можно получить доступ к% оператора.

b) Это позволяет вам очень легко делать простое позиционное форматирование. Если вы когда-либо работали с функцией стиля печати в C, вы узнаете, как это работает мгновенно.

Вот простой пример:

print("Hello, %s" % name)

Вывод:

hello, dev

c) Я использую спецификатор% s Format здесь, чтобы сказать Python, где заменить значение имени, представленное как строку.

d) Существуют другие конкретные формата, которые позволяют управлять форматом вывода. Например, можно преобразовать числа к шестнадцатеричным обозначению или добавить пробел пробелов для создания красиво отформатированных таблиц и отчетов.

e) Здесь вы можете использовать спецификатор формата% X, чтобы преобразовать значение int в строку и представлять ее в качестве шестнадцатеричного номера:

print('%x' % errno)   # first convert int into string and then hexadecimal value

Вывод:

'badc0ffee'

f) Синтаксис форматирования строки «Старый стиль» немного изменяется, если вы хотите сделать несколько замен в одну строку. Поскольку оператор% использует только один аргумент, вам нужно обернуть правую сторону в кортеже, как так:

print('Hey %s, there is a 0x%x error!' % (name, errno))

Вывод:

'Hey dev, there is a 0xbadc0ffee error!'

Я уверен, что вам интересно, почему этот форматирование стиля печати называется форматирование строк «Старый стиль». Он был технически заменен «новым стилем» форматирование в Python 3, который мы собираемся говорить о следующем.

2. ” Новый стиль “Форматирование строки (str.format)

a) Python 3 представил новый способ сделать форматирование строки, который также был позже погрешным в Python 2.7. Этот «новый стиль» форматирование строк избавляется от% -оператора специального синтаксиса и делает синтаксис для форматирования строки более регулярным. b) Форматирование теперь обрабатывается путем вызова .Format () на строковом объекте.

Введение:

STR.Format () STR.Format () Способ строкового класса позволяет делать переменные замены и форматирование значения. Это позволяет объединять элементы в строке с помощью позиционного форматирования.

Этот учебник проведет вас через некоторые общие применения формоздоров в Python, что может помочь сделать ваш код и программировать более читаемыми и удобными для пользователя.

Использование форматтеров:

Форматтеры работают, надевая один или несколько Поля замены или Защитники – Определяется парой фигурных скобок {} – в строку и звонить в str.format () метод.

Вы передадите метод, которое вы хотите объединить со строкой. Это значение будет передано в том же месте, что ваш заполнитель расположен при запуске программы.

Давайте распечатаем строку, которая использует Fixtatter:

print('my age is {}'.format(20))

Вывод:

my age is 20

a. В приведенном выше примере мы построили строку с парой кудрявых скобок в качестве заполнителя: «Мой возраст {}» б. Затем мы добавили метод str.format () и передавали значение целого числа 20 к этому методу. Это помещает значение 20 в строку, где были вьющиеся брекеты: Мой возраст 20

Мы также можем назначить переменную равную стоимость строки, которая имеет форматированные заполнители:

age='I am {} years old.'
print(age.format('twenty'))

Вывод:

I am twenty years old

В этом примере мы объединяем строку «двадцать» с большей строкой, заменяя фигурные скобки в исходную строку.

Использование форматтеров с несколькими заполнителями:

При использовании форматтеров вы можете использовать несколько пар фигурных скобок. Если бы мы хотели добавить еще одну переменную замену на предложение выше, мы можем сделать это, добавив вторую пару фигурных скобок и передаю второе значение в метод:

strings="my name is {} and i am {} years old"
print(strings.format("DEV","twenty"))

Вывод:

my name is DEV and i am twenty years old

Чтобы добавить еще одну замену, мы добавили вторую пару фигурных скобок в исходную строку. Затем мы прошли две строки в метод str.format (), отделяя их запятой.

Переупорядочение форматтеров с позиционным и аргументами ключевых слов:

  1. Когда мы оставляем курчавые брекеты пустыми без каких-либо параметров, Python заменит значения, пройденные через метод str.format () в порядке.

Как мы видели, до сих пор, что конструкция форматирования с двумя пустыми фигурными бремами с двумя значениями, пройденными через, будет выглядеть так:

strings="my name is {} and i am {} years old"
print(strings.format("DEV","twenty"))

Вывод:

my name is DEV and i am twenty years old

=>> Первая пара фигурных скобок заменена строковым значением «dev», а вторая пара замещена строковым значением «двадцать». Значения, которые существуют в методе, выглядят так: («Дев», «двадцать»)

=>> По сути, они являются типом данных кортежа, и каждое отдельное значение, содержащееся в кортеже, можно назвать его номером индекса, который начинается с номера индекса 0.

Мы можем пройти эти номера индекса в фигурные скобки, которые служат заполнителями в исходной строке:

strings="my name is {0} and i am {1} years old"
print(strings.format("DEV","twenty"))

В приведенном выше примере вывод будет то, что мы получаем, не передавая номера индекса в брекеты, так как мы вызываем значения в кортеже в порядке: вывод:

my name is DEV and i am twenty years old

=>> Но, если мы поменяем номера индекса с параметрами заполнителей, мы можем перевернуть значения, передаваемые в строку:

strings="my name is {1} and i am {0} years old"
print(strings.format("DEV","twenty"))
my name is twenty and i am DEV years old

=>> Если вы вызываете номер индекса 2 в кортеже, который имеет значения на положениях индекса 0 и 1, вы вызываете значение, которое не имеет диапазона. Когда вы вызываете номер индекса, который находится вне диапазона, вы получите сообщение об ошибке:

strings="my name is {2} and i am {0} years old"
print(strings.format("DEV","twenty"))
IndexError: tuple index out of range

Сообщение об ошибке, которое мы видим, относится к корпусу, имеющим только значения на номерах индекса 0 и 1, поэтому размещение индекса № 2 вне диапазона.

Использование переменных:

name='DEV'
age='twenty'
strings="my name is {} and i am {} years old"
print(strings.format(name,age)   # passing the variable defined 

Выход

my name is DEV and i am twenty years old
Заключение

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

Спасибо

Оригинал: “https://dev.to/mohit355/4-1-string-formatting-in-python-29j6”