Python:用If语句匹配空间

2024-04-19 23:00:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我试着做以下的事情,但是没有用。你知道吗

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

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

这一切都会匹配的。它必须是另一种方式,也没有办法我可以编辑的来源。谢谢


Tags: 字符串in脚本信息forbase错误with
3条回答

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

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

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

        else:
            outlist.append(i)

这也可以保护您不受其他类型的非数字输入的影响。你知道吗

这段代码将获取列表中的所有元素,并过滤掉空白的元素。你知道吗

mylist =  ['1','2','3','4','','','6','7']

for x in mylist:
    if x:
        print x
    else:
        pass # x is empty

您的方法可能会失败,因为您正在使用in而不是is。你知道吗

另外,不要将列表命名为list,因为这会覆盖list关键字。你知道吗

不要使用list作为变量名。迟早您会想使用构建的list并得到奇怪的bug:)

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

相关问题 更多 >