TypeError:int()参数必须是字符串或数字,而不是' list'。程序在将unicode转换为int时给出错误

时间:2015-11-06 16:05:07

标签: python mysql dictionary unicode

所以这是我的程序片段,它给了我错误..

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. 

有人可以建议我替代方式。

谢谢

1 个答案:

答案 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。这并没有真正改变任何事情,只是关于逻辑的一点。