从字符串列表中删除空字符串值

3

我正在从文本文件中读取字符串信息并将它们放入列表中,其中一行是这样的:

30121,long,Mehtab,10,20,,30

我希望从这个列表中删除 ,, 之间的空值,但是一直没有结果。我尝试过使用 .remove() 和 filter() 。Python 将其读取为 'str' 值。

5
由于它被读取为字符串,使用列表推导式来过滤空值并重新连接:','.join([i for i in s.split(',') if i]) - user3483203
1
顺便提一下:这显然是一个CSV文件,根据它来自哪里以及包含什么类型的数据,它可能使用CSV功能,如引用或转义,因此仅拆分字符串是行不通的。如果您不确定这不会成为问题,那么最好使用“csv”模块。 - abarnert
2
另外,“我已经尝试了.remove()和filter()”并不是很有用。如果您向我们展示您尝试过的代码,我们可以解释为什么它是错误的,以及如何修复它。如果您只告诉我们您尝试了某些东西,但没有向我们展示它,那么我们只能告诉您您一定做错了什么——这并不是很有帮助,因为您已经知道了,否则您就不会提出问题。 - abarnert
4个回答

1
>>> import re
>>> re.sub(',,+', ',', '30121,long,Mehtab,10,20,,30')
'30121,long,Mehtab,10,20,30'

0
使用 split()remove()
In [11]: s = '30121,long,Mehtab,10,20,,30'

In [14]: l = s.split(',')

In [15]: l.remove('')

In [16]: l
Out[16]: ['30121', 'long', 'Mehtab', '10', '20', '30']

0
你可以根据分隔符(这里是“,”)拆分字符串,然后使用列表推导式在确保它们不为空的情况下合并元素。
",".join([element for element in string.split(",") if element])

我们还可以使用element.strip()作为条件来过滤掉只有空格的字符串。

1
抱歉,我原本回答时有点匆忙,后来想到了要添加这个。完成了! :鞠躬: - Umair Mohammad

0

过滤器应该可以正常工作。首先,我将数据写入一个列表,然后使用过滤操作来过滤出列表中为空的项目。换句话说,只取那些不为空的项目。

data = list("30121","long","Mehtab",10,20,"",30)
filtered_data = list(filter(lambda str: str != '', data))
print(filtered_data)

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