Как мне удалить ведущие пробелы в Python?

181

У меня есть текстовая строка, которая начинается с нескольких пробелов, варьирующихся между 2 и 4.

Какой самый простой способ удалить ведущие пробелы? (т.е. удалить все перед определенным символом?)

"  Example"   -> "Example"
"  Example  " -> "Example  "
"    Example" -> "Example"
Джеймс Ванчай
источник

Ответы:

319

lstrip()Метод удаления ведущих пробельные, символ новой строки и символы табуляции в начале строки:

>>> '     hello world!'.lstrip()
'hello world!'

редактировать

Как отметил Бальфа в комментариях , для удаления только пробелов из начала строки lstrip(' ')следует использовать:

>>> '   hello world with 2 spaces and a tab!'.lstrip(' ')
'\thello world with 2 spaces and a tab!'

Связанный вопрос:

coobird
источник
10
Обратите внимание, что lstrip удаляет первые пробелы, которые могут превышать пробелы (табуляции и т. Д.). Обычно это то, что вы хотите. Если вы хотите удалить только пробелы и пробелы, вызовите "bla" .lstrip ("")
balpha
1
@balpha: Спасибо за это! Я добавил это к ответу.
coobird
3
программировал годами и не знал этого, спасатель
Крис Хоукс
3
Для новых программистов на Python было бы полезно отметить, что строки в python неизменны, поэтому, если вы работаете со строкой 'string_a', вы можете подумать, что string_a.lstrip () изменит саму строку, но на самом деле вы бы необходимо присвоить значение string_a.lstrip () как самой себе, так и новой переменной, например, "string_a = string_a.lstrip ()".
Поля
2
примечание: поскольку есть lstrip (), также есть strip () и rstrip ()
Александр Стор
87

Функция stripудалит пробелы в начале и конце строки.

my_str = "   text "
my_str = my_str.strip()

будет установлен my_strв "text".

Маркиз Ван
источник
18

Если вы хотите сократить пробелы до и после слова, но оставьте средние.
Вы можете использовать:

word = '  Hello World  '
stripped = word.strip()
print(stripped)
Тензин
источник
Стоит отметить , что это делает печать 'Hello World'со средним пространством неповрежденной, для тех , кто интересно, я предполагаю , что это было отвергнуто , потому что первоначальный вопрос был специально с просьбой убрать ведущие пробелы.
conapart3
2
docs.python.org/3/whatsnew/3.0.html Print Is A Function Оператор print был заменен функцией print () с аргументами ключевого слова для замены большей части специального синтаксиса старого оператора печати (PEP 3105).
mbrandeis
@mbrandeis Какое здесь уместное утверждение?
MilkyWay90
12

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

re.sub(r'^[^a]*', '')

удалить все до первого «а». [^a]можно заменить любым классом символов, который вам нравится, например, символами слова.

CJS
источник
3
Я думаю, что парень попросил «самый простой и простой способ»
Нет
10
Верно, но он также (возможно, непреднамеренно) попросил решение более общей проблемы, то есть «удалить все перед определенным символом?», И это более общее решение.
CJS
1

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

s = """
    line 1 has 4 leading spaces
    line 2 has 4 leading spaces
    line 3 has 4 leading spaces
"""

если бы print(s)мы получили вывод как:

>>> print(s)
    this has 4 leading spaces 1
    this has 4 leading spaces 2
    this has 4 leading spaces 3

и если мы использовали textwrap.dedent:

>>> import textwrap
>>> print(textwrap.dedent(s))
this has 4 leading spaces 1
this has 4 leading spaces 2
this has 4 leading spaces 3
Jaymon
источник