在python中从列表中删除空字符串

2024-10-01 13:33:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我要拆开一根绳子。我用的是:

def ParseStringFile(string):
p = re.compile('\W+')
result = p.split(string)

但是我有一个错误:我的结果有两个空字符串(''),一个在'。我怎样才能摆脱他们?在

enter image description here


Tags: 字符串restringdef错误resultsplitcompile
2条回答

正如nhahtdh指出的,空字符串是预期的,因为在字符串的开头和结尾都有一个\n,但是如果它们打扰了您,您可以非常快速有效地filter它们。在

>>> filter(None, ['', 'text', 'more text', ''])
['text', 'more text']

在匹配字符串之前,可以从字符串中删除所有新行:

p.split(string.strip('\n'))

或者,拆分字符串,然后删除第一个和最后一个元素:

^{pr2}$

[1:-1]获取结果的一个副本,并包含从1开始(即删除第一个元素)到结束于-2(即从第二个元素到最后一个元素)的所有索引。第二个索引是排他的)

一个较长而不那么优雅的替代方法是修改列表:

result = p.split(string)
del result[-1]   # remove last element
del result[0]    # remove first element

注意,在这两个解决方案中,第一个和最后一个元素必须是空字符串。如果有时输入的开头或结尾不包含这些空字符串,那么它们将表现出错误行为。然而,它们也是最快的解决方案。在

如果要删除结果中的所有空字符串,即使它们发生在结果列表中,也可以使用列表理解:

[word for word in p.split(string) if word]

相关问题 更多 >