Пример Ruby:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
Успешная конкатенация строк Python кажется мне многословной.
Пример Ruby:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
Успешная конкатенация строк Python кажется мне многословной.
name
в строке лежит локальная переменная, а в Python вы должны явно передавать словарь локальных переменных в формататор строк, если вы хотите, чтобы они их использовали.Ответы:
В Python 3.6 будет добавлена интерполяция буквенных строк, аналогичная интерполяции строк в Ruby. Начиная с этой версии Python (выпуск которой запланирован на конец 2016 года), вы сможете включать выражения в "f-strings", например:
До 3.6 самый близкий к этому
%
Оператор может быть использован для интерполяции строк в Python. Первый операнд - это строка для интерполяции, второй может иметь разные типы, включая «отображение», отображение имен полей на значения, которые должны быть интерполированы. Здесь я использовал словарь локальных переменныхlocals()
для сопоставления имени поляname
с его значением в качестве локальной переменной.Тот же код, использующий
.format()
метод последних версий Python, будет выглядеть так:Также есть
string.Template
класс:источник
%s
для строки и%03d
для числа, дополненного до 3 цифр начальными нулями. Это может быть просто написаноprint "%s has %03d" % ("Python", 2)
. Затем в этом примере в скобках%
ставится ключ сопоставления, после которого указывается значащие имена заполнителей, а не полагается на их порядок в строке. Затем вы передаете словарь, который сопоставляет имена ключей с их значениями. Вот почему Свен используетlocals()
функцию, которая возвращает dict, содержащий все ваши локальные переменные, поэтому он сопоставляетсяname
со значением names
в качестве типа преобразования - Python может преобразовать практически что угодно в строку. Но, конечно, вы потеряете специальные возможности форматирования других типов преобразования.Начиная с Python 2.6.X вы можете использовать:
источник
%
оператор для интерполяции строк не рекомендуется в Python 3.x. docs.python.org/dev/py3k/whatsnew/… объявляет о планах отказаться от%
начиная с версии 3.1, но этого не произошло.{}
может меня исключить.Я разработал пакет interpy , который позволяет интерполировать строки в Python .
Просто установите его через
pip install interpy
. А затем добавьте строку# coding: interpy
в начале ваших файлов!Пример:
источник
Строковая интерполяция Python похожа на printf () в C
Если вы попытаетесь:
Тег
%s
будет заменен наname
переменную. Вы должны взглянуть на теги функции печати: http://docs.python.org/library/functions.htmlисточник
print "First is %s, second is %s" % (var1, var2)
.Строковая интерполяция будет включена в Python 3.6, как указано в PEP 498 . Вы сможете сделать это:
Обратите внимание, что я ненавижу Спанч Боба, поэтому писать это было немного больно. :)
источник
Вы также можете иметь это
http://docs.python.org/2/library/string.html#formatstrings
источник
#
для печати. Они просто используют синтаксис Ruby.#
персонаж будет напечатан.Использование:
PS: производительность может быть проблемой. Это полезно для локальных сценариев, а не для рабочих журналов.
Дублированный:
Форматирование строки Python:% против .format
Что является эквивалентом Python для встраивания выражения в строку? (т.е. "# {expr}" в Ruby)
Что такое Ruby эквивалентно `s =" привет Python,% s. Где% s? " % ("Джон", "Мэри") `
Есть ли Python, эквивалентный строковой интерполяции Ruby?
источник
Для старого Python (проверено на 2.4) верхнее решение указывает путь. Ты можешь сделать это:
И вы получаете
источник
Python 3.6 и новее имеют интерполяцию буквенных строк с использованием f-строк:
источник