Skip to main content

How to Remove First and Last Characters from Strings in Python

This guide explores various methods for removing the first and last characters from a string in Python. We'll cover the highly recommended string slicing technique, the strip() methods (with caveats), and the more specific removeprefix() and removesuffix() methods (available in Python 3.9+).

String slicing is the most direct and generally the best way to remove the first and last characters from a string:

my_str = 'apple'
result = my_str[1:-1]
print(result) # Output: 'ppl'
  • my_str[1:-1] creates a slice starting from the second character (index 1) up to, but not including, the last character (index -1).

Removing Only the First Character

To remove only the first character:

my_str = 'apple'
result = my_str[1:] # Slice from index 1 to the end
print(result) # Output: 'pple'

Removing Only the Last Character

To remove only the last character:

my_str = 'apple'
result = my_str[:-1] # Slice from the beginning up to, but not including, the last character
print(result) # Output: 'appl'

Removing Characters with strip() Methods (Use with Caution)

The lstrip() and rstrip() methods remove leading and trailing characters, respectively. While they can be used, they might remove more than just the first or last character if those characters are repeated.

my_str = 'apple'

# Remove first 'a' and last 'e'
result = my_str.lstrip(my_str[0]).rstrip(my_str[-1])
print(result) # Output: 'ppl'


my_str_repeated = 'aaappleeee'

# This removes *all* leading 'a's and trailing 'e's
result_repeated = my_str_repeated.lstrip('a').rstrip('e')
print(result_repeated) # Output: 'ppl'
warning

Caution: lstrip() and rstrip() remove all occurrences of the specified characters from the beginning or end. Use them carefully if you only want to remove a single character. For single-character removal, slicing ([1:] or [:-1]) is more precise.

Removing Prefixes/Suffixes with removeprefix()/removesuffix() (Python 3.9+)

Python 3.9 introduced removeprefix() and removesuffix(), which are safer alternatives to lstrip()/rstrip() when you want to remove a specific prefix or suffix, not just characters.

my_str = 'apple'

# Only removes 'a' if it's the exact prefix
result = my_str.removeprefix('a').removesuffix('e')
print(result) # Output: 'ppl'
  • These methods only remove the exact string specified, and only if it occurs at the very beginning or end. They are more predictable than strip() methods when dealing with specific prefixes/suffixes.