在 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']
您也可以将filter
与None
或bool
一起使用:
>>> 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 中从数组中删除空元素的主要内容,如果未能解决你的问题,请参考以下文章