Python 为什么可以';我不能删除此列表中的空字符串吗?

Python 为什么可以';我不能删除此列表中的空字符串吗?,python,Python,我知道这是一个相当琐碎的问题,但这就是为什么我在试图解决它的时候也这么想。然而,我在这里问这个问题。这应该很容易,也许我做了一些完全错误的事情,但我想知道我做错了什么 我有以下字符串列表: ['1', ' ', '2', ' ', '6', ' ', '6', ' ', '5', ' ', '6', ' ', '5'] 我已经通过这样做剥离了/n: rstrip("\n") 现在,我想去掉空字符串,所以我尝试使用过滤器(None,x),但这不起作用。此外,尝试使用循环的将其删除;也没用 f

我知道这是一个相当琐碎的问题,但这就是为什么我在试图解决它的时候也这么想。然而,我在这里问这个问题。这应该很容易,也许我做了一些完全错误的事情,但我想知道我做错了什么

我有以下字符串列表:

['1', ' ', '2', ' ', '6', ' ', '6', ' ', '5', ' ', '6', ' ', '5']
我已经通过这样做剥离了/n:

rstrip("\n") 
现在,我想去掉空字符串,所以我尝试使用
过滤器(None,x)
,但这不起作用。此外,尝试使用循环的
将其删除
;也没用

filter(None, the_list)
这句话有什么不对?我还尝试将其包装到
list()
,但也没有成功

我也试过:

my_list = [str for str in the_list if str]
我错过什么了吗


PS:我的最终目标是将字符串转换成整数,这样我就可以计算东西,但我只有在去掉空字符串的情况下才能这样做。

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

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']

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


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

如果剥离后为空,可以通过测试将其移除:

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

但是,您可能首先要检查您是如何获得该列表的。也许您可以更早地去掉这些空格,或者使用
str.split()
而不使用参数在任意宽度的空格上拆分,而不是在固定宽度的字符串上拆分。

我想它们不是空字符串,而是空白

l = [x for x in l if x.strip()]
筛选(无,我的列表)
仅删除空项目,但您的项目包含的空间不是空的。试试下面

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']

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

[si for si in sl if si.strip()]
试试这个:

while ' ' in my_list:
    my_list.remove(' ')
过滤器
将不起作用,因为
'
不是空的,即不

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

效率不是很高,但很有效。您的字符串不是空的。它们各自包含一个空格。您的字符串之间有空格,请删除它们并重试。这不起作用@Chris_Rands。谢谢大家提供的信息,我不知道为什么这会被否决,但我只是一个新手,没有看到明显的部分。很抱歉,我只是在努力学习。我会接受这个答案,因为你告诉我,我应该首先去掉空格,这是正确的方向。我现在知道我做错了什么!谢谢你,玛蒂恩!使用
if el.strip()
if not el.isspace()
或仅使用样式首选项之间有什么显著区别?@Chris\u Rands:
el.strip()
必须返回一个新的字符串对象,
el.isspace()
仅返回一个布尔值。因为我通常在此之前处理字符串,所以我没有想到
el.isspace()
。对于ASCII文本
el.strip()还有三个答案。谢谢!@gustafbstrom
for num in range(len(my_list)):
    if my_list[num] == " ":
        try:
            my_list.pop(num)
        except IndexError:
            pass