2024-10-01 13:33:12 发布
网友
我要拆开一根绳子。我用的是:
def ParseStringFile(string): p = re.compile('\W+') result = p.split(string)
但是我有一个错误:我的结果有两个空字符串(''),一个在'。我怎样才能摆脱他们?在
正如nhahtdh指出的,空字符串是预期的,因为在字符串的开头和结尾都有一个\n,但是如果它们打扰了您,您可以非常快速有效地filter它们。在
\n
filter
>>> filter(None, ['', 'text', 'more text', '']) ['text', 'more text']
在匹配字符串之前,可以从字符串中删除所有新行:
p.split(string.strip('\n'))
或者,拆分字符串,然后删除第一个和最后一个元素:
[1:-1]获取结果的一个副本,并包含从1开始(即删除第一个元素)到结束于-2(即从第二个元素到最后一个元素)的所有索引。第二个索引是排他的)
[1:-1]
一个较长而不那么优雅的替代方法是修改列表:
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]
正如nhahtdh指出的,空字符串是预期的,因为在字符串的开头和结尾都有一个
\n
,但是如果它们打扰了您,您可以非常快速有效地filter
它们。在在匹配字符串之前,可以从字符串中删除所有新行:
或者,拆分字符串,然后删除第一个和最后一个元素:
^{pr2}$[1:-1]
获取结果的一个副本,并包含从1开始(即删除第一个元素)到结束于-2(即从第二个元素到最后一个元素)的所有索引。第二个索引是排他的)一个较长而不那么优雅的替代方法是修改列表:
注意,在这两个解决方案中,第一个和最后一个元素必须是空字符串。如果有时输入的开头或结尾不包含这些空字符串,那么它们将表现出错误行为。然而,它们也是最快的解决方案。在
如果要删除结果中的所有空字符串,即使它们发生在结果列表中,也可以使用列表理解:
相关问题 更多 >
编程相关推荐