Базовая конкатенация строк
Самый простой способ построить динамическую строку в 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.