Формат строки в Python

Завершено

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

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

Форматирование символа процента (%)

Заполнитель переменной в строке %s. После строки используйте другой % символ, за которым следует имя переменной. В следующем примере показано, как отформатировать символ.%

mass_percentage = "1/6"
print("On the Moon, you would weigh about %s of your weight on Earth." % mass_percentage)

Выходные данные: On the Moon, you would weigh about 1/6 of your weight on Earth.

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

print("""Both sides of the %s get the same amount of sunlight, but only one side is seen from %s because the %s rotates around its own axis when it orbits %s.""" % ("Moon", "Earth", "Moon", "Earth"))

Выходные данные: Both sides of the Moon get the same amount of sunlight, but only one side is seen from Earth because the Moon rotates around its own axis when it orbits Earth.

Совет

Хотя этот метод по-прежнему является допустимым способом форматирования строк, он может привести к ошибкам и уменьшить ясность кода, если вы работаете с несколькими переменными. Один из двух других вариантов форматирования, описанных в этом уроке, лучше подходит для этой цели.

Метод format()

Метод .format() использует фигурные скобки ({}) в качестве заполнителей в строке, а присваивание переменных для замены текста.

mass_percentage = "1/6"
print("On the Moon, you would weigh about {} of your weight on Earth.".format(mass_percentage))

Выходные данные: On the Moon, you would weigh about 1/6 of your weight on Earth.

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

mass_percentage = "1/6"
print("""You are lighter on the {0}, because on the {0} you would weigh about {1} of your weight on Earth.""".format("Moon", mass_percentage))

Выходные данные: You are lighter on the Moon, because on the Moon you would weigh about 1/6 of your weight on Earth.

Вместо пустых фигурных скобок можно использовать числа. {0} означает использование первого аргумента (с нулевым индексом) для .format(), в данном случае это Moon. Простое повторение {0} работает нормально, но это снижает удобочитаемость. Чтобы повысить удобочитаемость, используйте аргументы из ключевых слов в .format(), а затем ссылайтесь на те же аргументы в фигурных скобках:

mass_percentage = "1/6"
print("""You are lighter on the {moon}, because on the {moon} you would weigh about {mass} of your weight on Earth.""".format(moon="Moon", mass=mass_percentage))

Выходные данные: You are lighter on the Moon, because on the Moon you would weigh about 1/6 of your weight on Earth.

Сведения о f-строках

Начиная с версии Python 3.6 можно использовать f-строки. Эти строки выглядят как шаблоны и используют имена переменных из кода. Использование f-строк в предыдущем примере будет выглядеть следующим образом:

print(f"On the Moon, you would weigh about {mass_percentage} of your weight on Earth.")

Выходные данные: On the Moon, you would weigh about 1/6 of your weight on Earth.

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

В отличие от f-строк, которые менее детализированы по сравнению с любым другим вариантом форматирования, можно использовать выражения внутри фигурных скобок. Эти выражения могут быть функциями или прямыми операциями. Например, если нужно представить значение 1/6 в виде процента с одним десятичным разрядом, можно использовать функцию round() напрямую:

print(round(100/6, 1))

Выходные данные: 16.7

В f-строках не нужно присваивать значение переменной заранее:

print(f"On the Moon, you would weigh about {round(100/6, 1)}% of your weight on Earth.")

Выходные данные: On the Moon, you would weigh about 16.7% of your weight on Earth.

Использование выражения не требует вызова функции. Любой из строковых методов также является допустимым. Например, строка может применить определенный регистр для создания заголовка:

subject = "interesting facts about the moon"
heading = f"{subject.title()}"
print(heading)

Выходные данные: Interesting Facts About The Moon