2017-02-01 5 views

ответ

6

Просто разделить на непечатаемых и затем добавьте их обратно.

a = 'foo bar hello world' 

splitted = a.split() # split at ' ' 

splitted = [x + ' ' for x in splitted] # add the ' ' at the end 

Или, если вы хотите немного больше фантазии:

splitted = ['{} '.format(item) for item in a.split()] 
+0

Будет ли это работать с несколькими пробелами, т. Е. Вставить обратно правильную сумму? – usr2564301

+2

Это делает его неоднозначным, когда строка должна быть разделена. После первого, второго, последнего? Учитывая, что он не указал эту информацию (и я не думал об этом на примере), я не думаю, что это необходимо. – MSeifert

+0

@RadLexus: Нет, не будет. Невозможно сохранить произвольные пробелы простым использованием простых строковых методов, подобных этому. – ShadowRanger

8

Если вы хотите обрабатывать и сохранять произвольные пробегов пробельных, вам необходимо регулярное выражение:

>>> import re 
>>> re.findall(r'(?:^|\S+)\s*', ' foo \tbar hello world') 
[' ', 'foo \t', 'bar ', 'hello ', 'world'] 
+0

Это полезно, и я буду помнить об этом решении, но мне не нужно оставлять лишние пробелы. –