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