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

Siy*_*yah -1 python

我知道这是一个相当微不足道的问题,但这也是我在试图解决问题时也想到的原因.然而,我在这里问这个问题.它应该很容易,可能我做的事情完全错了,但我想知道我做错了什么.

我有这个字符串列表:

['1', ' ', '2', ' ', '6', ' ', '6', ' ', '5', ' ', '6', ' ', '5']
Run Code Online (Sandbox Code Playgroud)

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

rstrip("\n") 
Run Code Online (Sandbox Code Playgroud)

现在,我想摆脱空字符串,所以我尝试使用filter(None,x),但这不起作用.此外,试图用一个删除它for loop; 也没用.

filter(None, the_list)
Run Code Online (Sandbox Code Playgroud)

这个陈述有什么问题?我也试过把它包装进去list(),但也没用.

还试过这个:

my_list = [str for str in the_list if str]
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

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

Mos*_*oye 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']
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 6

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

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

my_list = [el for el in the_list if el.strip()]
Run Code Online (Sandbox Code Playgroud)

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