2015-04-27 2 views
0

Я пытаюсь использовать функцию str.format() для печати матрицы в столбцах.Как передать кортеж в str.format()?

Это линия, которая идет не так:

>>>> "{!s:4}{!s:5}".format('j',4,3) 
'j 4 ' 
>>>> "{!s:4}{!s:5}".format(b) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: tuple index out of range 
>>> b 
('dat', 'is') 

Что я делаю неправильно?

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

ответ

-1

EDIT: Извините, я ответил на ваш вопрос слишком рано, прежде чем полностью его понял. Я думаю, вы хотите распаковать кортеж, точно так же, как в ответе progo.

Это немного зависит от того, какую версию Python вы используете. Следующие действия для Python 3.5 (и, вероятно, все Python 3).

Код:

b = ("dat", "is") 
"{0}".format(b) 

Выход:

"('dat', 'is')" 

Также проверьте Python docs on string formatting.

+0

Он также работает в Python 2.x. Вы только пытаетесь напечатать одно значение '{0}', и это то, что вы получаете - значение 'b'. '' {0}, {1} ". Format (b)' fail (как и '' {1} ". Format (b)'). Это не отвечает на вопрос OP. – SiHa

0

Вы можете распаковать кортеж, если можете быть уверены в его длине.

>>> "{!s:4}{!s:5}".format(*b) 
'j 4 ' 
Смежные вопросы