我正在为python程序执行字符串格式化,但是,我收到错误“没有足够的格式字符串参数”。 我的代码部分是
a[i][j] = input("college %d %s" %(j+1) %d[i])
有人能指出我的错误吗?因为我无法弄明白
答案 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])
话虽如此,你不应该这样做,因为效率低下,随着更多参数的添加,%%
的堆积会变得非常丑陋