您好我有一个查找信息的脚本,并且该信息被假设为整数,但有时我发现一个空字符串,因此我收到以下错误:
ValueError: invalid literal for int() with base 10: ''
我试图执行以下操作,但它不起作用。
list = ['12', '14', '45', '']
for i in list:
if '' in i:
i = 0
i
else:
i
这将匹配一切。它必须是另一种方式,我无法编辑源代码。感谢
答案 0 :(得分:1)
不要将list
用作变量名称。迟早你会想要使用构建list
并获得奇怪的错误:)
my_list = ['12', '14', '45', '']
for i in my_list:
if not i:
# i is empty string
else:
# ...
我猜您显示的错误来自您尝试使用int(i)
如果i
应该转换为int
,那么一种方法就是这样做
for i in my_list:
if not i:
i = 0
else:
i = int(i)
另一种方法是使用异常处理程序
for i in my_list:
try:
i = int(i)
except ValueError:
i = 0
答案 1 :(得分:1)
一种简单但有效的方法是捕获该错误并忽略它。您还可以检查价值的“真实性”。
mylist = ['12', '14', '45', '']
outlist = []
for s in mylist:
if s:
try:
i = int(s)
except ValueError:
continue
else:
outlist.append(i)
这也可以保护您免受其他类型的非数字输入。
答案 2 :(得分:0)
这段代码将获取列表中的所有元素,并过滤掉空白的元素。
mylist = ['1','2','3','4','','','6','7']
for x in mylist:
if x:
print x
else:
pass # x is empty
您的方法可能失败了,因为您使用的是in
而不是is
。
另外,请不要将列表list
命名为覆盖list
关键字。
答案 3 :(得分:0)
看起来你想要这个:
for i in lst:
if i == "":
i = 0
else:
i = int(i)
# do stuff with an iteger i here
答案 4 :(得分:0)
我想你可能正在寻找像
这样的东西import string
list = ['12', '14', '45', '', '1 3']
for i in list:
if i == '':
i = 0
print i
elif ' ' in i:
i = string.replace(i, ' ', '')
print i
else:
print i