Python String strip() Method

The Python strip() method removes characters from the beginning and end of a string.

Beginners usually use it to remove extra whitespace, such as spaces, tabs, and newline characters. This is especially useful when cleaning user input or processing text from a file.

Quick answer #

text = "  hello  "
clean_text = text.strip()
print(clean_text)

Output:

hello

Use strip() to remove whitespace from both ends of a string. It does not change the original string.

What strip() does #

strip() is a string method that returns a new string.

Key points:

  • strip() returns a new string
  • It removes characters from the beginning and end only
  • By default, it removes whitespace
  • It does not remove characters from the middle of the string
  • Strings are immutable, so the original string stays the same

Example:

text = "  hello world  "

print(text.strip())
print(text)

Output:

hello world
  hello world  

The cleaned version is returned by strip(), but the original text value is unchanged.

If you are new to strings, see Python strings explained: basics and examples.

Basic syntax #

There are two common forms:

  • string.strip()
  • string.strip(chars)

string.strip() #

This removes whitespace from both ends:

name = "  Alice  "
print(name.strip())

Output:

Alice

string.strip(chars) #

This removes any matching characters from both ends:

text = "!!hello??"
print(text.strip("!?"))

Output:

hello

Important:

  • chars means a set of characters to remove from both ends
  • The order of characters in chars does not matter

Remove whitespace with strip() #

This is the most common use of strip().

It is useful for:

  • Cleaning input() values
  • Cleaning lines read from a file
  • Removing spaces before checking or comparing text
  • Removing tabs and newline characters at both ends

Example with user input:

username = "  sam  "
clean_username = username.strip()

print(clean_username)

Output:

sam

This matters when comparing strings:

answer = " yes  "

if answer.strip() == "yes":
    print("Matched")

Output:

Matched

If you want a broader guide, see how to remove whitespace from a string in Python.

Example with file-style text:

line = "Python basics\n"
print(repr(line))
print(repr(line.strip()))

Output:

'Python basics\n'
'Python basics'

Using repr() helps you see hidden characters like \n.

If you are working with files, see how to read a file line by line in Python.

Remove specific characters #

You can pass characters as an argument, such as strip("!?").

Python will:

  • Remove any matching character from both ends
  • Keep removing until it finds a character that is not in the set
  • Leave the middle of the string unchanged

Example:

text = "??hello!!"
print(text.strip("!?"))

Output:

hello

Another example:

text = "abcHelloCba"
print(text.strip("abc"))

Output:

HelloC

This can surprise beginners.

strip("abc") does not mean “remove the exact text abc once”. It means “remove any a, b, or c characters from both ends”.

It also does not remove characters from the middle.

If you need to replace text anywhere in a string, use replace() instead.

strip() vs lstrip() vs rstrip() #

These methods are similar, but they remove characters from different sides.

  • strip() removes from both ends
  • lstrip() removes from the left side only
  • rstrip() removes from the right side only

Example:

text = "  hello  "

print(repr(text.strip()))
print(repr(text.lstrip()))
print(repr(text.rstrip()))

Output:

'hello'
'hello  '
'  hello'

Choose the method based on which side needs cleaning.

Important behavior to understand #

These points are worth remembering:

  • strip("abc") does not remove the exact text "abc" once
  • It removes any of the characters a, b, or c from both ends
  • Middle characters are untouched
  • Save the result to a variable if you want to use the cleaned string

Example:

filename = "txt_report.txt"
print(filename.strip(".txt"))

Output:

_report

This happens because Python removes any ., t, or x characters from both ends.

So strip(".txt") is not a safe way to remove a file extension.

If you need to change exact text in a string, replace() is often a better fit for simple cases.

When to use strip() #

Use strip() when you need to clean text at the edges of a string.

Common cases:

  • Cleaning input() values
  • Cleaning lines read from a file
  • Removing accidental spaces before validation
  • Preparing text before comparisons

Example:

email = "  user@example.com  "

if email.strip():
    print("Email was entered")

Output:

Email was entered

You may also combine strip() with other string methods. For example, after removing extra spaces, you might convert text to lowercase with lower().

Common mistakes #

Beginners often run into these problems:

  • Expecting strip() to change the original string
  • Expecting strip() to remove text from the middle
  • Using strip(".txt") and expecting only the exact file extension to be removed
  • Forgetting that strip(chars) removes any matching characters, not a whole substring

Here is a quick debugging example:

text = "  hello\n"

print(text)
print(repr(text))
print(text.strip())
print(repr(text.strip()))

Output:

  hello

'  hello\n'
hello
'hello'

Useful debugging commands:

print(text)
print(repr(text))
print(text.strip())
print(repr(text.strip()))
help(str.strip)

repr() is very helpful because it shows hidden whitespace clearly.

FAQ #

Does strip() remove spaces in the middle of a string? #

No. strip() only removes characters from the start and end of the string.

Does strip() change the original string? #

No. It returns a new string because Python strings are immutable.

What does strip() remove by default? #

It removes whitespace such as spaces, tabs, and newline characters from both ends.

How is strip() different from replace()? #

strip() removes characters only from the ends. replace() can change matching text anywhere in the string.

Can I remove only the left or right side? #

Yes. Use lstrip() for the left side and rstrip() for the right side.

See also #

Press Esc to close