Python:使用If语句匹配空间

时间:2013-01-29 04:10:47

标签: python string if-statement

您好我有一个查找信息的脚本,并且该信息被假设为整数,但有时我发现一个空字符串,因此我收到以下错误:

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

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

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

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

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

5 个答案:

答案 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