我知道这是一个相当微不足道的问题,但这就是为什么我在试图解决它时也会这么想的原因。然而,我在这里问这个问题。它应该很容易,而且我可能做错了什么,但我想知道我做错了什么。
我有这个字符串列表:
['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:我的最终目标是将字符串转换为整数,以便我可以计算东西,但我只能在我摆脱空字符串时才这样做。
答案 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
效率不高但是工作得很好