2008-09-22 1 views
12

Есть ли функция в Python для разделения строки без игнорирования пробелов в результирующем списке?Есть ли функция в Python для разделения строки без игнорирования пробелов?

Например:

s="This is the string I want to split".split() 

дает мне

>>> s 
['This', 'is', 'the', 'string', 'I', 'want', 'to', 'split'] 

Я хочу что-то вроде

['This',' ','is',' ', 'the',' ','string', ' ', .....] 

ответ

40
>>> import re 
>>> re.split(r"(\s+)", "This is the string I want to split") 
['This', ' ', 'is', ' ', 'the', ' ', 'string', ' ', 'I', ' ', 'want', ' ', 'to', ' ', 'split'] 

Использование захваченным в re.split() вызывает функцию для возврата разделителей.

1

Твердая часть с тем, что вы пытаетесь сделать то, что вы не давая ему характер, чтобы расколоться. split() взрывает строку символа, который вы ему предоставляете, и удаляет этот символ.

Возможно, это может помочь:

s = "String to split" 
mylist = [] 
for item in s.split(): 
    mylist.append(item) 
    mylist.append(' ') 
mylist = mylist[:-1] 

Грязный, но это будет делать трюк для вас ...

+0

с дополнительным пространством, которое не существует в конце ... – Mez 2008-09-22 08:38:01

+0

Я только что обновил этот код на r вывести окончательное пространство. Тем не менее, это еще не лучший способ сделать это, просто * * способ сделать это :) – rossp 2008-09-24 03:37:24

4

Я не думаю, что есть функция в стандартной библиотеке, что делает это сам по себе, но «раздел» сближается

Лучший способ, вероятно, использовать регулярные выражения (который, как я хотел бы сделать это на любом языке)

import re 
print re.split(r"(\s+)", "Your string here") 
2

Глупый ответ просто ради этого:

mystring.replace(" ","! !").split("!") 
Смежные вопросы