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