Базовая конкатенация строк
Самый простой способ построить динамическую строку в Python — это простая конкатенация.
питон
xxxxxxxxxx
1
days = 28
2
month = 'February"
3
my_string = month + ' is the shortest month of the year, with '+ str(days) + ' days.'
Этот подход прост, но он беспорядочный, неэффективный и подвержен ошибкам (когда-нибудь забывать пробелы?), Особенно для сложных, динамических строк.
Вы также можете быть знакомы с %оператором (называемым по модулю), который позволяет вам выполнять замены строк следующим образом (используя предопределенную переменную «месяц» для замены):
питон
xxxxxxxxxx
1
month = 'February'
2
my_string = '%s is the shortest month of the year' % month
Хотя этот подход также действителен, он более или менее устарел (Python 3 представил format()метод, который был перенесен в Python 2.7).
Вам также может понравиться:
Шесть Python Советы для начинающих
Введение в формат () Метод
Это подводит нас к format()методу Python . Введенный в Python 3 , этот метод предоставляет простой способ конструировать и форматировать строки с динамическими заменами. Как только вы поймете основной синтаксис, этот метод предлагает гибкий способ конструирования строк, который также делает ваш код более чистым (на мой взгляд).
В этом format()методе есть два основных типа подстановки: по индексу и по ключевому слову.
Подстановка по индексу
Передав индекс, метод форматирования позволит вам вставить отдельные или несколько элементов из списка на основе их индекса. В этом примере 'world'это первый (индекс 0) элемент в нашем списке, поэтому он вставляется.
питон
xxxxxxxxxx
1
my_string = 'Hello {0}!'.format('world','friend','there')
Когда мы печатаем нашу строку в консоль, мы получаем: Hello world!
Чтобы увидеть другой пример, попробуйте интерактивный пример ниже:
Пример: попробуйте изменить значения индекса в строке!
Подстановка по ключевому слову
Другой подход заключается в использовании подстановки ключевых слов, где ключевое слово ссылается на ключ в паре ключ-значение.
питон
xxxxxxxxxx
1
my_string = "This month is {f}!".format(f='February')
Если мы напечатаем нашу строку в консоли, мы получим: This month is February!
Пример: использование переменных
Форматирование чисел
Предыдущие примеры работают для вставки строк в строки, но что если вы хотите вставить числовое значение? Для этого есть дополнительные спецификаторы форматирования, которые добавляются к значению, чтобы указать желаемый формат вывода.
питон
xxxxxxxxxx
1
months = 12
2
days = 365
3
avg_days_per_month = days/months
4
# The ':g' specifier formats the value as a 'general' number.
6
myString='On average, the months in a year have {0:g}.'.format(avg_days_per_month)
(Если вы не включите спецификатор формата для целого числа, он по умолчанию будет «общим» форматом.)
| Тендерный | Число форматов как |
| d | Десятичное целое |
| г | грамм | Общий номер. По умолчанию используется 6 уровней точности или минимальное количество соответствующих уровней. | «G» действует так же, как «g», за исключением того, что большие числа будут отформатированы с «E». |
| е | Номер с фиксированной точкой. По умолчанию 6 уровней точности. |
| е | Е | Научная нотация |
| % | Преобразует значение в процентах |
| N | То же, что «g», но использует разделители текущей локали. |
| Тендерный | Преобразует число в |
| ч | ЧАС | Шестнадцатеричный (нижний регистр | верхний регистр) |
| о | восьмеричный |
| б | двоичный |
| с |
Unicode |
F-строка (буквальная строковая интерполяция, о мой!)
С выпуском Python 3.6 мы познакомились с F-строками.
Как следует из их названия, F-строки начинаются с "f", за которым следует строковый литерал. Мы можем динамически вставлять значения в наши строки с помощью идентификатора, заключенного в фигурные скобки, как мы это делали в format()методе. Однако вместо индекса, который представляет позицию нашего значения в списке, или ключа, который отображается на наше значение, мы можем использовать имя переменной в качестве нашего идентификатора.
Возьмите следующий пример:
питон
xxxxxxxxxx
1
month = 'February'
2
my_string = f'This month is {month}!'
4
print(my_string)
Здесь наша month переменная помещается прямо в нашу строку. {month}затем заменяется monthзначением 'февраль', когда вычисляется F-строка. Итак, при my_stringпечати на наш терминал мы получаем This month is February!. Это устраняет некоторую неоднозначность, которую предыдущие методы добавляли в форматирование строк. В конце концов, зачем создавать заполнитель для представления значения, на которое мы ссылаемся позже, если вместо этого мы можем использовать одну переменную?
Еще одним преимуществом F-строк является то, что нам не нужно учитывать переменные типы. Обратите внимание, что num_normal_days в приведенном выше примере это целое число 28. Ранее нам пришлось бы использовать заполнители, такие как %d или :g для добавления числового типа в нашу строку. С F-строкой нам не нужно сообщать нашей программе, что она будет искать целое число внутри строки. Давайте позволим Python делать то, что он умеет - делать нашу жизнь проще.
Примечание . При использовании свойств объектов с F-строками обязательно избегайте точечных обозначений и вместо этого используйте фигурные скобки. Например, если бы у меня был вызванный объект monthи я хотел получить доступ к его свойству days, я бы использовал months['days']вместо month.days.
Дополнительные методы строки Python
Python also offers a set of methods to help you programmatically transform your strings. Here is a list of a few methods worth making note of:
| Method | Result |
| capitalize() | Capitalizes the first letter of the string |
| casefold() | Returns the string in all lowercase (useful for string matching according to the python documentation) |
| count() | Counts all instances of a substring |
| upper() | Returns the string in all uppercase letters |
| split() | Splits string on designated seperator |
| encode() | Returns an encoded string |
| swapcase() | Swaps the case of each letter in the string |
More methods can be found in Python's String documentation.
Note: If you're interested in another formatting method in Python, check out their docs on String Templates.