возникли проблемы с форматированием строки в python - PullRequest
1 голос
/ 13 марта 2012

Я делаю форматирование строки для программы на Python, однако я получаю сообщение об ошибке «недостаточно аргументов для форматирования строки». моя строка кода равна

a[i][j] = input("college %d %s" %(j+1) %d[i])

Может кто-нибудь указать на мою ошибку? как я не могу понять самостоятельно

Ответы [ 6 ]

3 голосов
/ 13 марта 2012

Используя метод строкового формата, вы можете сделать это следующим образом:

a[i][j] = input("college {0:d} {1:s}".format(j+1,d[i]))

Я считаю, что использование формата % устарело.Метод string.format() в любом случае более гибкий.

См .: http://docs.python.org/library/string.html#format-string-syntax

3 голосов
/ 13 марта 2012

Вы должны сказать

a[i][j] = input("college %d %s" % (j+1, d[i]))

Это связано с тем, что оператор форматирования строки% ожидает один аргумент, поэтому, если вам нужно несколько средств форматирования, вам нужно передать кортеж. Поэтому я не могу сказать

"%s %s" % "Hello" % "World"

Я вместо этого должен сказать

"%s %s" % ("Hello", "World")

Если вы используете Python 2.6 или новее, у вас также есть возможность использовать метод формата , например,

"college {0} {1}".format(j+1, d)

А если вы используете Python 2.7 или новее, вы можете опустить значения индекса и просто сказать

"college {} {}".format(j+1, d)
1 голос
/ 13 марта 2012

a[i][j] = input("college %d %s" %(j+1,d[i]))

1 голос
/ 13 марта 2012

Я думаю, вы имели в виду что-то вроде

a[i][j] = input("college %d %s" % (j+1, d[i]))
0 голосов
/ 13 марта 2012

Вы можете исправить это, просто добавив %

a[i][j] = input("college %d %%s" %(j+1) %d[i])

Это работает, потому что, скажем j=5, тогда

"college %d %%s" %(j+1)

оценивается как

"college 6 %s"

так что тогда у вас есть

a[i][j] = input("college 6 %s"%d[i])

Сказав это, вы не должны делать это таким образом, потому что это неэффективно, и суммирование %% станет очень уродливым, когда будет добавлено больше параметров

0 голосов
/ 13 марта 2012
a[i][j] = input("college %d %s" % (j+1, d[i]))
...