我需要拆分一个字符串。我正在使用这个:
def ParseStringFile(string):
p = re.compile('\W+')
result = p.split(string)
但我有一个错误:我的结果有两个空字符串(''),一个在'Лев'之前。我如何摆脱它们?
答案 0 :(得分:4)
正如nhahtdh指出的那样,空字符串是预期的,因为在字符串的开头和结尾有一个\n
,但如果他们打扰你,你可以非常快速有效地filter
。< / p>
>>> filter(None, ['', 'text', 'more text', ''])
['text', 'more text']
答案 1 :(得分:2)
您可以在匹配之前删除字符串中的所有换行符:
p.split(string.strip('\n'))
或者,拆分字符串,然后删除第一个和最后一个元素:
result = p.split(string)[1:-1]
[1:-1]
获取结果的副本,包括从1开始的所有索引(即删除第一个元素),结束于-2(即第二个到最后一个元素。第二个索引是独占的)< / p>
更长,更不优雅的替代方案是就地修改列表:
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]