0

嗨,我有一个查找信息的脚本,信息应该是整数,但有时我发现一个空字符串,因此我收到以下错误:

ValueError: invalid literal for int() with base 10: ''

我试图执行以下操作,但它不起作用。

list = ['12', '14', '45', ''] 

for i in list:
    if '' in i:
        i = 0
        i
    else:
        i

这将匹配所有内容。它必须是另一种方式,我无法编辑源代码。谢谢

4

5 回答 5

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
于 2013-01-29T04:16:09.283 回答
1

一个简单但有效的方法是捕获该错误并忽略它。您还可以检查该值的“真实性”。

mylist = ['12', '14', '45', '']
outlist = []

for s in mylist:
    if s:
        try:
            i = int(s)
        except ValueError:
            continue

        else:
            outlist.append(i)

这也可以保护您免受其他类型的非数字输入。

于 2013-01-29T04:17:10.253 回答
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关键字。

于 2013-01-29T04:16:39.060 回答
0

看起来你想要这个:

for i in lst:
    if i == "":
        i = 0
    else:
        i = int(i)

    # do stuff with an iteger i here
于 2013-01-29T04:16:45.083 回答
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
于 2013-01-29T04:23:53.800 回答