为什么我不能删除此列表中的空字符串?

时间:2016-11-23 13:17:02

标签: python

我知道这是一个相当微不足道的问题,但这就是为什么我在试图解决它时也会这么想的原因。然而,我在这里问这个问题。它应该很容易,而且我可能做错了什么,但我想知道我做错了什么。

我有这个字符串列表:

['1', ' ', '2', ' ', '6', ' ', '6', ' ', '5', ' ', '6', ' ', '5']

我已经通过这样做剥离了/ n:

rstrip("\n") 

现在,我想摆脱空字符串,所以我尝试使用filter(None,x),但这不起作用。另外,尝试使用for loop将其删除;也没有工作。

filter(None, the_list)

这句话有什么问题?我也试过把它包装成list(),但也没有用。

还试过这个:

my_list = [str for str in the_list if str]

我错过了什么吗?

PS:我的最终目标是将字符串转换为整数,以便我可以计算东西,但我只能在我摆脱空字符串时才这样做。

8 个答案:

答案 0 :(得分:8)

您没有空字符串,但包含空格的字符串。您可以使用str.isspace过滤掉不需要的字符串:

s = ['1', ' ', '2', ' ', '6', ' ', '6', ' ', '5', ' ', '6', ' ', '5']

r = [i for i in s if not i.isspace()]
print(r)
# ['1', '2', '6', '6', '5', '6', '5']

答案 1 :(得分:6)

你没有空字符串。你有每个字符串有一个空格。

您可以通过测试剥离后是否为空来删除它们:

my_list = [el for el in the_list if el.strip()]

但是,您可能想要首先检查如何获得该列表。也许您可以先删除这些空格,或者使用str.split()而不使用参数来分割任意宽度空格而不是固定宽度的字符串。

答案 2 :(得分:4)

此字符串不为空,其中有空格。 使用strip()

[str for str in l if str.strip()]

答案 3 :(得分:2)

包含空格的字符串不是空字符串。您可以通过以下方式删除仅包含空格的字符串:

[si for si in sl if si.strip()]

答案 4 :(得分:1)

我猜他们不是空字符串,而是空格

l = [x for x in l if x.strip()]

答案 5 :(得分:0)

filter(None, my_list)仅删除空项,但您的项目包含非空的空格。请尝试以下

my_list = ['1', ' ', '2', ' ', '6', ' ', '6', ' ', '5', ' ', '6', ' ', '5']
my_list = filter(lambda x:x.strip(), my_list)
# ['1', '2', '6', '6', '5', '6', '5']

答案 6 :(得分:0)

试试这个:

while ' ' in my_list:
    my_list.remove(' ')

filter无法使用,因为' '不为空,即不是None

答案 7 :(得分:0)

for num in range(len(my_list)):
    if my_list[num] == " ":
        try:
            my_list.pop(num)
        except IndexError:
            pass

效率不高但是工作得很好