Я хочу сделать что-то вроде String.Format("[{0}, {1}, {2}]", 1, 2, 3) которое возвращает:
[1, 2, 3]
Как мне это сделать в Python?
Переведено автоматически
Ответ 1
В предыдущих ответах использовалось форматирование %, которое постепенно отменяется в Python 3.0+. Предполагая, что вы используете Python 2.6 +, здесь описана более перспективная система форматирования:
Используйте "классические" замены строк (ala C's printf). Обратите внимание на различные значения здесь % как спецификатора формата строки и % для применения списка (фактически кортежа) к строке форматирования. (И обратите внимание, что % используется в качестве оператора по модулю (остатка) для арифметических выражений.)
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))
Обратите внимание, что имена "один", "два" и "три" могут быть любыми, имеющими смысл.)
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's shortened form !r padding = 5# Control prefix padding precision = 3# and precision for printing