【问题标题】:Can't seem to remove all empty strings and blank strings from a list?似乎无法从列表中删除所有空字符串和空白字符串?
【发布时间】:2019-04-03 14:48:43
【问题描述】:

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

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

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

我希望自己收到一个没有''或''的列表,但只有列表的第一部分受到影响。

【问题讨论】:

  • 发布parse的样本。
  • 您在迭代列表时正在修改列表,这将导致项目被跳过。您应该为此使用列表理解或过滤器之类的东西。例如:parse = [p for p in parse if p not in ['', ' ']]
  • 我想这可以完成这项工作:clean_list = [row for row in parse if row.strip()]

标签: python


【解决方案1】:

这样就可以了:

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

【讨论】:

  • 我知道你在那里做了什么。
  • if row.strip() 位很聪明
【解决方案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']

【讨论】:

    【解决方案3】:

    不要修改您正在迭代的列表。

    假设 parse 就像

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

    【讨论】:

    • 不能说,因为我们不确定在 OP 的情况下 parse 列表到底有多准确。
    • @DirtyBit 这就是“假设”位的用途
    • 这成功了!有一个警告 - 它需要使用“和”而不是“或”。仍然不确定我是否理解为什么只修改列表不起作用,但现在我知道了。
    【解决方案4】:

    你可以使用:

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

    输出列表2:

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

    【讨论】:

    • 这正是我给出的答案,@Frenchy。
    • 是的,只是带宽的问题,所以我让你陪!我支持你
    • :-P 谢谢@Frenchy
    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    相关资源
    最近更新 更多