在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()
谢谢。
答案 0 :(得分:3)
你有一个包含4个元素的元组:
(line['code'],line['level'],line['target'],line['distancefromtarget'])
但只有3个替代占位符:
'%s,%s,%s'
当您尝试格式化时,并非所有“参数”(元组元素)都将转换为格式化的字符串(因此错误)。更改元组以删除元素,或更改正在插值的字符串以添加其他字段(例如'%s,%s,%s,%s'
)。