似乎无法从列表中删除所有空字符串和空字符串?

时间:2019-04-03 14:48:44

标签: python

我从Billboard Hot 100页面上刮取了一长串信息,我试图将这些信息提炼成歌曲和艺术家。但是,我似乎无法删除列表中所有空白的空白部分以及所有空白部分。 ”和“'

我已经尝试过在这里可以找到的关于过滤器功能以及其他建议的其他选项。我最初的尝试是使用包含的代码,该代码适用于列表的第一部分,但由于某种原因,它永远不会完成,并且总是会部分停止。

for y in parse:
    if y == "":
        parse.remove("")
    elif y == " ":
        parse.remove(" ")

我希望自己收到的列表中没有单独的“”或“”,但是仅影响列表的第一部分。

4 个答案:

答案 0 :(得分:4)

这将完成工作:

>>> dirty =['1',' ', '', '2','3','4']
>>> clean = [row for row in dirty if row.strip()]
>>> clean
['1', '2', '3', '4']
>>> 

答案 1 :(得分:2)

filterstr.strip结合使用:

parse = ['a', ' ', 'b', 'c', '', 'd']

Python 2.x

print(filter(str.strip, parse))

Python 3.x

print(list(filter(str.strip, parse)))

输出

['a', 'b', 'c', 'd']

编辑

要删除元素中的空白,请说:

parse = ['a ', ' ', ' b', 'c', '', 'd ']

map()filterstr.strip结合使用:

Python 2.x

print(map(str.strip, filter(str.strip, parse)))

Python 3.x

print(list(map(str.strip, filter(str.strip, parse))))

输出

['a', 'b', 'c', 'd']

答案 2 :(得分:1)

请勿修改您要遍历的列表。

假设解析就像

parse=[1,' ', '', 2,3,4]

您可以做类似

的操作
parse_fix=[]
for y in parse:
    if y!='' and y!=' ': parse_fix.append(y)

然后parse_fix将是您想要的列表

简短版本可能是这样

parse=[y for y in parse if y!='' and y!=' ']

答案 3 :(得分:0)

您可以使用:

list1 = ["1 ", "", " ", "3", "  4", "       ",""]
list2 = [x for x in list1 if x.strip() ]

输出列表2:

['1 ', '3', '  4']