在python中遇到字符串格式化问题

时间:2012-03-12 22:10:05

标签: python string-formatting

我正在为python程序执行字符串格式化,但是,我收到错误“没有足够的格式字符串参数”。 我的代码部分是

a[i][j] = input("college %d %s" %(j+1) %d[i])
有人能指出我的错误吗?因为我无法弄明白

6 个答案:

答案 0 :(得分:3)

你应该说

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)

答案 1 :(得分:3)

使用字符串格式方法,您可以按如下方式执行:

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

答案 2 :(得分:1)

我认为你的意思是

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

您只需添加额外的%

即可解决此问题
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])

话虽如此,你不应该这样做,因为效率低下,随着更多参数的添加,%%的堆积会变得非常丑陋