虽然我为python程序做了一个字符串格式化,但是我收到一个错误“格式字符串没有足够的参数”。 我的代码部分的行在python中遇到字符串格式错误
a[i][j] = input("college %d %s" %(j+1) %d[i])
有人能指出我的错误?我想不出我自己
虽然我为python程序做了一个字符串格式化,但是我收到一个错误“格式字符串没有足够的参数”。 我的代码部分的行在python中遇到字符串格式错误
a[i][j] = input("college %d %s" %(j+1) %d[i])
有人能指出我的错误?我想不出我自己
你应该说
a[i][j] = input("college %d %s" % (j+1, d[i]))
这是因为%字符串格式化操作者只需要一个说法,所以如果你想多格式化,你需要通过一个元组。所以我不能说
"%s %s" % "Hello" % "World"
我,而不是必须说
"%s %s" % ("Hello", "World")
如果你正在使用Python 2.6或更高版本,您还可以使用format method的选项,例如
"college {0} {1}".format(j+1, d)
如果你正在使用Python 2.7或更高版本,则可以省略索引值,并且简单地说
"college {} {}".format(j+1, d)
我想你的意思是像
a[i][j] = input("college %d %s" % (j+1, d[i]))
a[i][j] = input("college %d %s" %(j+1,d[i]))
a[i][j] = input("college %d %s" % (j+1, d[i]))
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
实际上,你可以仅仅通过增加一个额外%
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])
说了这么多,你不应该做这种方式,因为它是效率低下,最多叠加的%%
会得到更多参数添加
“%”非常难看已弃用。您应该考虑使用'“大学{:d} {:s}”。格式(j + 1,d [i])' – 2012-03-12 22:13:53
'%'不被弃用。它计划是,但没有。 – kindall 2012-03-12 23:40:11