使用“write”进行Python字符串格式化

时间:2014-05-29 09:16:24

标签: python

我有一些像这样的代码:

#w = open("blabla.py", "w") is already called
w.write("Button(root, text = %s,command=%s).grid(row=%s,column=%s)\n" % textvalue,buttoncommand,str(rowvalue),str(columnvalue))

但是,如果我运行它,我会收到以下错误:

TypeError: not enough arguments for format string

有什么问题?

3 个答案:

答案 0 :(得分:4)

将vars包含在一个元组中:

w.write("Button(root, text = %s,command=%s).grid(row=%s,column=%s)\n" % (textvalue,buttoncommand,str(rowvalue),str(columnvalue)))

或者使用更好的格式版本:

w.write("Button(root, text = {0},"
      "command={1}).grid(row={2},"
      "column={3})\n".format(textvalue,
                             buttoncommand,
                             str(rowvalue),
                             str(columnvalue)))

答案 1 :(得分:0)

您需要将格式参数放入元组(添加括号):

... % (textvalue,buttoncommand,str(rowvalue),str(columnvalue))

但格式化字符串的%语法正在变得过时。试试这个:

"'{0}', '{1}', '{2}', '{3}', '{4}'".format(textvalue,buttoncommand,str(rowvalue),str(columnvalue))

答案 2 :(得分:0)

如果将多个参数传递给格式字符串,则需要将它们放在括号中:

w.write("Button(root, text = %s,command=%s).grid(row=%s,column=%s)\n" % (textvalue,buttoncommand,str(rowvalue),str(columnvalue)))
                                                                        ^                                                      ^

您还可以查看新的格式语法:https://docs.python.org/2/library/string.html#format-examples