繁体   English   中英

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

[英]How to delete an empty list in a list? (Python)

我写了一个函数,需要一个.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']

使用strip() (或rstrip() )摆脱换行符:

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

另请参阅: 如何在Python中删除(替换)换行符?

您可以简单地通过以下方式进行操作:

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']
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', '')

如果您的样本数据在两行填充之间没有空白行,那么在我看来,您首先阅读文本文件时就遇到了行尾问题。 如果在文本文件中发布阅读方式,则可以在问题消除到可以删除任何空白列表之前获得解决问题的答案。

就是说,如果lst实际上确实只有[\\n]作为其他每个元素 ,则可以按如下所示直接跳过它们:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM