s循环中的格式

时间:2015-11-02 17:23:08

标签: python loops format

我正在尝试使用循环中的格式字符串构建文件名:

Kv = [0001, 001, 1, 5 ]   
Kx = [0001, 001, 1, 5 ]   
dth = [001, 05 , 1 ,5, 10]   
dw = [001, 01 , 1 ,2 ,3 ,4 ,5 ,6 ,8 ,10 ,20 ,30 ,40]   
 for x in Kv:   
   for y in Kx:   
    for z in dth:   
     for w in dw:   
      f = open("VY_dw%w_dth%z_Kx%y_Kv%x.txt"%(x,y,z,s), "w")

但这不起作用。我收到了错误

  

假格式字符

或者我添加了需要映射的括号。

为什么我会收到这些错误?我该如何修理它们?

1 个答案:

答案 0 :(得分:0)

对于旧式Python格式字符串,在格式字符串中,您不能使用该语法的变量名称。你可以这样做:

fmt = "VY_dw%s_dth%s_Kx%s_Kv%s.txt"
for ...
    # "old-style" format strings
    f = open(fmt % (w, z, y, x), 'w') # vars should be in order

如果您希望命名格式字符串,我建议str.format(新式):

fmt = "VY_dw{w}_dth{z}_Kx{y}_Kv{x}.txt"
for ...
    # named vars
    f = open(fmt.format(w=w, z=z, y=y, x=z), 'w')

您可能会混淆old-style string formatting(不允许使用已命名的变量)new-style string formatting(允许使用已命名的变量)。