Я хочу сделать что-то вроде String.Format("[{0}, {1}, {2}]", 1, 2, 3)
, которое возвращает:
[1, 2, 3]
Как это сделать в Python?
Я хочу сделать что-то вроде String.Format("[{0}, {1}, {2}]", 1, 2, 3)
, которое возвращает:
[1, 2, 3]
Как это сделать в Python?
В предыдущих ответах использовалось форматирование%, которое постепенно прекращается в Python 3.0+. Предполагая, что вы используете Python 2.6+, здесь описывается более надежная система форматирования:
http://docs.python.org/library/string.html#formatstrings
Хотя есть и более сложные функции, простейшая форма выглядит очень близко к тому, что вы написали:
>>> "[{0}, {1}, {2}]".format(1, 2, 3)
[1, 2, 3]
Вы можете сделать это тремя способами:
Использовать автоматическую красивую печать Python:
print [1, 2, 3] # Prints [1, 2, 3]
Отображая то же самое с переменной:
numberList = [1, 2]
numberList.append(3)
print numberList # Prints [1, 2, 3]
Используйте "классические" подстановки строк (ala C printf). Обратите внимание на различные значения здесь% в качестве спецификатора строкового формата и%, чтобы применить список (фактически кортеж) к строке форматирования. (И обратите внимание, что% используется как оператор modulo (остаточный) для арифметических выражений.)
print "[%i, %i, %i]" % (1, 2, 3)
Обратите внимание, что если мы используем нашу предопределенную переменную, нам нужно будет превратить ее в кортеж, чтобы сделать это:
print "[%i, %i, %i]" % tuple(numberList)
Использовать форматирование строки Python 3. Это все еще доступно в более ранних версиях (от версии 2.6), но это "новый" способ сделать это в Py 3. Обратите внимание, что вы можете либо использовать позиционные (порядковые) аргументы, либо именованные аргументы (на мой взгляд, я поставил их в обратном порядке.
print "[{0}, {1}, {2}]".format(1, 2, 3)
Обратите внимание, что имена "один", "два" и "три" могут иметь смысл.)
print "[{one}, {two}, {three}]".format(three=3, two=2, one=1)
Вы ищете форматирование строк, которое в python основано на функции sprintf в C.
print "[%s, %s, %s]" % (1, 2, 3)
Для полной справки смотрите здесь: http://docs.python.org/library/stdtypes.html#string-formatting
Чтобы печатать элементы последовательно, используйте {} без указания индекса
print('[{},{},{}]'.format(1,2,3))
(работает с python 2.7 и python 3.1)
Вы не сформулировали себя очень похвально, но я рискну предположить, что это то, что вы ищете:
foo = "Hello"
bar = "world"
baz = 2
print "%s, %s number %d" % (foo, bar, baz)
Я думаю, что эта комбинация отсутствует: P
"[{0}, {1}, {2}]".format(*[1, 2, 3])
У вас много решений:)
простой способ (C-стиль):
print("[%i, %i, %i]" %(1, 2, 3))
Использовать str.format()
print("[{0}, {1}, {2}]", 1, 2, 3)
Использовать str.Template()
s = Template('[$a, $b, $c]')
print(s.substitute(a = 1, b = 2, c = 3))
Вы можете прочитать PEP 3101 - Расширенное форматирование строк
Если вы не знаете, сколько элементов в списке, этот aproach является самым универсальным
>>> '[{0}]'.format(', '.join([str(i) for i in [1,2,3]]))
'[1, 2, 3]'
Это упрощается для списка строк
>>> '[{0}]'.format(', '.join(['a','b','c']))
'[a, b, c]'
PEP 498, который приземлился на python 3.6
добавила литеральную строчную интерполяцию, которая в основном представляет собой сокращенную форму format
.
Теперь вы можете сделать:
f"[{1}, {2}, {3}]"
Другими полезными для меня полезными являются:
pi = 3.141592653589793
today = datetime(year=2018, month=2, day=3)
num_2 = 2 # Drop assigned values in
num_3 = "3" # Call repr(), or it shortened form !r
padding = 5 # Control prefix padding
precision = 3 # and precision for printing
f"""[{1},
{num_2},
{num_3!r},
{pi:{padding}.{precision}},
{today:%B %d, %Y}]"""
Что будет производить:
"[1,\n 2,\n '3',\n 3.14,\n February 03, 2018]"