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

9
with open("text.txt", 'r') as file:
    for line in file:
        line = line.rstrip('\n' + '').split(':')
        print(line)

我正在尝试删除生成的数组系列中的空列表。我想将text.txt中的每一行都转换成一个数组,这样我就可以准确地访问每个元素。空列表显示为['']。正如你看到的第四行,我已经尝试明确剥离它们。空元素曾经填充了换行符,在使用.rstrip('\n')成功移除它们。编辑:我有一些术语上的误解,上面的内容现在已更新。本质上,我想摆脱空列表。

从技术上讲,[''] 不是一个空列表。它是一个包含一个空字符串的列表。而你对 Games 回答的评论表明你希望从列表中捕获空值?我认为最重要的问题是:为什么要这样做?有更好的方法来简单地计数。 - Wayne Werner
1个回答

21

由于我无法看到你的确切代码,很难给出完全符合你要求的解决方案,但是如果您想获取列表中所有非空字符串元素,则可以执行以下操作:

>>> 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

您想查看哪一行代码?需要查看其中一个输出的示例吗?如果是这样... - codaamok
['123', '123', '1039', '123', '123', '123', '123'] - codaamok
@user2296349 这并不完全是一个列表,对吧? - Games Brainiac
@user2296349 请检查一下是否适用于您。我已更新以匹配您的问题。 - Games Brainiac
抱歉,游戏。我在清理厨房。没错,是的!感谢您对我的容忍。您帮助我更清晰地识别了我的问题,并当然,达到了一个可行的解决方案! - codaamok
@user2296349 很高兴能为您服务 :) - Games Brainiac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接