from xlrd import open_workbook
book = open_workbook('trial.xls')
sheet=book.sheet_by_index(0)
name_email={}
i=0
for row_index in range(sheet.nrows):
if name_email.has_key(sheet.cell(row_index,i).value):
name_email[str(sheet.cell(row_index,i).value.strip())]=sheet.cell(row_index,i+1).value,)
else:
abc = str(sheet.cell(row_index,i).value.strip())
print repr(abc)
print '"{0}"'.format(repr(abc))
# print name_email[abc]
name_email[str(sheet.cell(row_index,i).value.strip())]=sheet.cell(row_index,i+1).value
i+=1
print name_email.keys()
print name_email
结果是: “马诺伊” “马诺伊” “迪比恩杜” “'dibyendu'” “苏拉夫” “苏拉夫” ['dibyendu'、'sourav'、'manoj'] {'dibyendu':(u'd。邮箱:b@gmail.com',),'sourav':(美国)。邮箱:b@gmail.com',),'manoj':(美。邮箱:c@gmail.com',)}
但仍然无法访问打印名为廑email[abc]抛出错误 印刷体姓名\u电子邮件[abc] KeyError:'manoj'
问题不在于用作索引的变量(这很好,并且可以预期的那样工作),而在于if条件。在
你的代码
当且仅当
name_mail
不包含键abc
时,才尝试打印name_email[abc]
(如“else:”语句中所示)。似乎你想做的恰恰相反-打印它时,有一个键,没有键时,添加,对吗?只需重新安排你的if条件。在现在有点像
^{pr2}$应该是的
正如你所想的那样:
你的变量
abc
显然没有包含你认为的那样,如果你硬编码键时它能工作的话。在相关问题 更多 >
编程相关推荐