Заменить несколько пробелов с одиночным пробелом в Python
У меня есть эта строка:
mystring = 'Here is some text I wrote '
Как я могу подставить двойные, тройные (...) пробелы только к одному пробелу, чтобы получить:
mystring = 'Here is some text I wrote'
Ответ 1
Простая возможность (если вы предпочитаете избегать RE),
' '.join(mystring.split())
Разделение и объединение выполняют задачу, о которой вы явно спрашиваете - плюс, они также делают дополнительный, о котором вы не говорите, но видите в вашем примере, удаляя конечные пробелы; -).
Ответ 2
import re
re.sub( '\s+', ' ', mystring ).strip()
это также заменит все вкладки, символы новой строки и другие символы типа "пробелы".
полоса() в конце будет отрезать любые конечные пробелы, как вы просили.
Ответ 3
Для полноты вы также можете использовать:
mystring = mystring.strip() # the while loop will leave a trailing space,
# so the trailing whitespace must be dealt with
# before or after the while loop
while ' ' in mystring:
mystring = mystring.replace(' ', ' ')
который будет быстро работать с строками с относительно небольшим количеством пробелов (быстрее, чем re в этих ситуациях).