for循环中的format语句

时间:2014-09-08 16:30:41

标签: python formatting

我正在尝试将文件中的元组打印为:

for row in s:
    # Loop over columns.
    for column in row:
        print(column, type(column), end=" ")
        of1.write("%s  " % column)
        #of1.write("{:<10}{:<8}{:<23}{:<20}\n".format(row))
        of1.write("\n")
        print(end="\n")

所有元素都是来自print语句输出的str:

64.08K <class 'str'> 20.0 <class 'str'> 0.95 <class 'str'> 1.7796943385724604e-05 <class 'str'> 

代码工作正常,但很明显,格式不正确。我正在尝试使用格式语句 为了更好地格式化,如在注释行中,但它给出错误:

File "eos_res.py", line 54, in <module>
    of1.write("{:<10}{:<8}{:<23}{:<20}\n".format(row))
IndexError: tuple index out of range

请帮助。

1 个答案:

答案 0 :(得分:1)

您正尝试将整行作为一行传递给格式。使用:

of1.write("{:<10}{:<8}{:<23}{:<20}\n".format(*row))

让Python将row的各个值传递给.format()

或者,使用从一个位置参数中提取单个索引的格式:

of1.write("{0[0]:<10}{0[1]:<8}{0[2]:<23}{0[3]:<20}\n".format(row))