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

时间:2013-11-09 11:52:30

标签: python arrays file elements

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

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

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

修改

我对某些术语有误解,上面的内容现已更新。基本上,我想摆脱空名单。

1 个答案:

答案 0 :(得分:15)

由于我看不到你的确切行,很难给你一个完全符合你要求的解决方案,但是如果你想得到列表中不是空字符串的所有元素,那么你可以这样做:

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