【发布时间】:2013-05-31 06:19:28
【问题描述】:
我遇到了一个问题“invalid literal for int() with base 10: ''”,这意味着 python 无法将 '' 转换为整数。但是我已经添加了一个条件if(sh.cell_value(rowx=rx, colx=3)!=''):,它可以跳过excel中不包含任何内容的块。有人有什么想法吗?非常感谢!
import xlrd
book = xlrd.open_workbook("streeteasy.xls")
sh = book.sheet_by_index(0)
total = 0
for rx in range (sh.nrows):
if(sh.cell_value(rowx=rx, colx=3)!=''):
s = sh.cell_value(rowx=rx, colx=3)
print filter(unicode.isdigit, s)
print int(filter(unicode.isdigit, s))
total += int(filter(unicode.isdigit, s))
【问题讨论】:
-
如果您引用的错误消息是实际错误消息,则字符串不为空。它包含一个空格。此外,即使您的
if块没有执行,您仍然会继续循环的其余部分并尝试在s上调用int。 -
检查
if string.strip(),这将删除空格... -
@BrenBarn 除非帖子在您发表评论后得到忍者编辑,否则我认为您误读了。
''是空字符串 - 没有空格。 -
@sgpc 我添加了 .strip() 之类的:print int(filter(unicode.isdigit, s.strip())),但还是不行……