并非所有参数都被转换

时间:2016-06-08 15:32:31

标签: python

在Python中,我得到' TypeError:并非在字符串格式化期间转换所有参数'

我不确定为什么会这样。这一行正在突出显示问题所在 - data.append('%s,%s,%s'%line['code'],line['level'],line['target'],line['distancefromtarget']

有人能找到问题吗?

如果它有帮助,这是围绕这一行的其他代码。

def updatestocklevel(quantity, stocklevel, code):
        with open('stockcontrol.csv',newline='') as f:
                for line in f:
                    if code in line:
                        data = line.split(",")
                        target = (data[2])
        updatetarget = int(target) - int(stocklevel)
        newlevel = stocklevel - quantity
        stocklevel = str(stocklevel)
        newlevel = str(newlevel)
        updatetarget = str(updatetarget)
        import sys
        import csv

        data=[]
        code = code
        newval= newlevel
        newtlevel = updatetarget
        f=open("stockcontrol.csv")
        reader=csv.DictReader(f,fieldnames=['code','level', 'target', 'distancefromtarget'])
        for line in reader:
          if line['code'] == code:
            line['level']= newval
            line['distancefromtarget']= newtlevel
          data.append('%s,%s,%s'%(line['code'],line['level'],line['target'],line['distancefromtarget']))
        f.close()

        f=open("stockcontrol.csv","w")
        f.write("\n".join(data))
        f.close()

谢谢。

1 个答案:

答案 0 :(得分:3)

你有一个包含4个元素的元组:

(line['code'],line['level'],line['target'],line['distancefromtarget'])

但只有3个替代占位符:

'%s,%s,%s'

当您尝试格式化时,并非所有“参数”(元组元素)都将转换为格式化的字符串(因此错误)。更改元组以删除元素,或更改正在插值的字符串以添加其他字段(例如'%s,%s,%s,%s')。