How do I remove leading whitespace in Python?

PythonStringWhitespaceTrim

Python Problem Overview


I have a text string that starts with a number of spaces, varying between 2 & 4.

What is the simplest way to remove the leading whitespace? (ie. remove everything before a certain character?)

"  Example"   -> "Example"
"  Example  " -> "Example  "
"    Example" -> "Example"

Python Solutions


Solution 1 - Python

The lstrip() method will remove leading whitespaces, newline and tab characters on a string beginning:

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

Edit

As balpha pointed out in the comments, in order to remove only spaces from the beginning of the string, lstrip(' ') should be used:

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

Related question:

Solution 2 - Python

The function strip will remove whitespace from the beginning and end of a string.

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

will set my_str to "text".

Solution 3 - Python

If you want to cut the whitespaces before and behind the word, but keep the middle ones.
You could use:

word = '  Hello World  '
stripped = word.strip()
print(stripped)

Solution 4 - Python

To remove everything before a certain character, use a regular expression:

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

to remove everything up to the first 'a'. [^a] can be replaced with any character class you like, such as word characters.

Solution 5 - Python

The question doesn't address multiline strings, but here is how you would strip leading whitespace from a multiline string using python's standard library textwrap module. If we had a string like:

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

if we print(s) we would get output like:

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

and if we used 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

Solution 6 - Python

My personal favorite for any string handling is strip, split and join (in that order):

>>> ' '.join("   this is my  badly spaced     string   ! ".strip().split())
'this is my badly spaced string !'

In general it can be good to apply this for all string handling.

This does the following:

  1. First it strips - this removes leading and ending spaces.
  2. Then it splits - it does this on whitespace by default (so it'll even get tabs and newlines). The thing is that this returns a list.
  3. Finally join iterates over the list and joins each with a single space in between.

Solution 7 - Python

Using regular expressions when cleaning the text is the best practice

def removing_leading_whitespaces(text):
     return re.sub(r"^\s+","",text)

Apply the above function

removing_leading_whitespaces("  Example")
"  Example"   -> "Example"

removing_leading_whitespaces("  Example  ")
"  Example  " -> "Example  "

removing_leading_whitespaces("    Example")
"    Example" -> "Example"

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJames WanchaiView Question on Stackoverflow
Solution 1 - PythoncoobirdView Answer on Stackoverflow
Solution 2 - PythonMarquis WangView Answer on Stackoverflow
Solution 3 - PythonTenzinView Answer on Stackoverflow
Solution 4 - PythoncjsView Answer on Stackoverflow
Solution 5 - PythonJaymonView Answer on Stackoverflow
Solution 6 - PythonrobmsmtView Answer on Stackoverflow
Solution 7 - PythonAshok KumarView Answer on Stackoverflow