如何删除列表中的空列表? (蟒蛇)

时间:2014-04-16 15:12:21

标签: python list split

我写了一个带有.txt文件的函数。

它首先做的是将文件拆分为','并将它们添加到列表中,该列表创建了一个列表列表。我使用了:

lst = s.split(',')

我确实得到了一个列表列表,除了每一行都有一个空列表[' \ n']。我需要找到一种摆脱这些空列表的方法,因为它们会破坏剩下的代码。

有没有简单的方法呢?或者只是我做错了什么?

非常感谢任何帮助。 谢谢!

示例数据:

1,2,3,4
,3,4,

预期产出:

['1','2','3','4\n']
['','3','4','\n']

当前输出:

['1','2','3','4\n']
['\n']
['','3','4','\n']

使用sshashank124后的输出建议:

['1','2','3','4\n']
[]
['','3','4','\n']

使用Alex Thornton的建议后输出:

['1','2','3','4\n']
[]
['','3','4','\n']

4 个答案:

答案 0 :(得分:1)

使用strip()(或rstrip())删除换行符:

lst = s.strip().split(',')

另请参阅:How can I remove (chomp) a newline in Python?

答案 1 :(得分:0)

你可以简单地这样做:

lst = [i for i in s.split(',') if i != '\n']

实施例

>>> s = 'hello,\n,world,\n,bye,\n,world'

>>> lst = [i for i in s.split(',') if i != '\n']
>>> print lst
['hello', 'world', 'bye', 'world']

答案 2 :(得分:0)

lst = filter(lambda a: len(a)==1 and a[0]!='\n' or len(a)>1, lst)

这将清除仅包含\ n的空列表[]或列表的列表。 但是,在将不需要的字符串拆分为列表之前,最好先清除它们的文本。

修改

请注意,在代码末尾,您必须将lst替换为包含不需要的字符的列表。 您也可以尝试使用此代码从原始文本文件中删除\ n。

text_file = text_file.replace('\n', '')

答案 3 :(得分:0)

如果您的示例数据在两个填充行之间没有空行,那么在我看来,您在读取文本文件时遇到了行结尾问题。如果您发布文本文件中的阅读方式,您可以获得解决问题的答案,然后才能找到要删除的空列表。

也就是说,如果lst确实只有[\n]作为每个其他元素,您可以按以下方式跳过它们:

lst = s.strip().split(',')[::2]

(注意我已经合并了之前答案中提到的strip以删除换行符。)