所以这是我的程序片段,它给了我错误..
bob_phones={}
for lea in leadArray:
lead_id=(lea.lead_id).text
phone = (lea.phone_number).text
if phone not in bob_phones.keys():
new={phone:[lead_id]}
bob_phones.update(new)
for i in getPhonenumber(date):
if i not in bob_phones.keys():
status="Not in boberdoo"
lead_id="Not found"
#c.writerow([date,i,status,lead_id])
print str(date) + " | | " + i + " | | " + status + " | | " + lead_id
elif i in bob_phones.keys():
status = "Found in boberdoo"
lead_id=int(bob_phones[i])
#c.writerow([date,i,status,lead_id])
print str(date) + " | | " + i + " | | " + status + " | | " + str(lead_id)
#print missing_leads
return missing_leads
所以在else if语句中我想用lead_id更新mysql表,但是它不允许我将它从unicode转换为int,因为我从字典中获取该值。它给了我这个错误。
TypeError: int() argument must be a string or a number, not 'list'.Program giving error while converting unicode to int.
有人可以建议我替代方式。
谢谢
答案 0 :(得分:2)
看这里:
if phone not in bob_phones.keys():
new={phone:[lead_id]}
bob_phones.update(new)
当您创建dict
时,由于括号,您将值指定为列表(new={phone:[lead_id]}
)。所以删除那些方括号,它应该工作。
另外,请注意在if之后不需要elif语句。要么我在bob_phones.keys()(if
分支),要么不在,所以你应该使用else
。这并没有真正改变任何事情,只是关于逻辑的一点。