在 Python 中从数组中删除空元素

Posted

技术标签:

【中文标题】在 Python 中从数组中删除空元素【英文标题】:Removing empty elements from an array in Python 【发布时间】:2013-11-21 10:32:22 【问题描述】:
with open("text.txt", 'r') as file:
    for line in file:
        line = line.rstrip('\n' + '').split(':')
        print(line)

我在尝试删除正在生成的一系列数组中的空列表时遇到问题。我想让text.txt 中的每一行都成为一个数组,这样我就能够准确地分别访问每一行的每个元素。

空列表显示为[''] - 正如您在第四行看到的那样,我试图明确地将它们剥离。空元素曾经用换行符填充,这些已使用.rstrip('\n') 成功删除。

编辑:

我对一些术语有误解,以上内容现已更新。本质上,我想摆脱空列表。

【问题讨论】:

技术上[''] 不是一个空列表。这是一个包含一个空字符串的列表。您对 Games 回答的评论表明您想以某种方式从列表中捕获空值?我认为最重要的问题是:为了什么?有更好的方法来简单地计数。 【参考方案1】:

由于我看不到您的确切行,因此很难为您提供完全符合您要求的解决方案,但是如果您想获取列表中非空字符串的所有元素,那么您可以这样做:

>>> l = ["ch", '', '', 'e', '', 'e', 'se']
>>> [var for var in l if var]
Out[4]: ['ch', 'e', 'e', 'se']

您也可以将filterNonebool 一起使用:

>>> filter(None, l)
Out[5]: ['ch', 'e', 'e', 'se']
>>> filter(bool, l)
Out[6]: ['ch', 'e', 'e', 'se']

如果您希望摆脱带有空字符串的列表,那么对于您的具体示例,您可以这样做:

with open("text.txt", 'r') as file:
    for line in file:
        line = line.rstrip('\n' + '').split(':')
        # If line is just empty
        if line != ['']:
            print line

【讨论】:

你想看哪一行?输出之一的示例?如果是这样... ['123', '123', '1039', '123', '123', '123', '123'] [''] @user2296349 这不完全是一个列表,现在是吗? @user2296349 检查这是否适合您。我更新了它以匹配您的问题。 抱歉,游戏。正在打扫厨房。是的,它确实!谢谢你对我的包容。您帮助我更清楚地确定了我的问题,当然,还找到了可行的解决方案!

以上是关于在 Python 中从数组中删除空元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中从数组中删除一个元素

如何在 PHP 中从多个数组中删除空行元素

PHP 在PHP中从数组中删除重复的元素

python如何二删除二维或者三维数组/列表中某维的空元素

在 Swift 中从数组中删除重复元素

在 Python 中从列表前面删除一个元素是不是便宜?