Using Python, how can I remove one or more newline characters at the end of a string, if present?
Python provides the string method rstrip
for this purpose. By default, it will remove trailing newlines, carriage returns, and spaces.
my_string = "Hello world! \r\n\n" my_string = my_string.rstrip() # will produce "Hello world!"
We can optionally provide a specific set of characters for rstrip
to remove. So, to remove only trailing newlines, leaving all other characters intact, we can write the following:
my_string = "Hello world! \r\n\n" my_string = my_string.rstrip("\n") # will produce "Hello world! \r"
We can use any number of characters in any order here and they will be removed from the end of the string. For example:
my_string = "Hello world! \r\n\n" my_string = my_string.rstrip("\n\r !d") # will produce "Hello worl"
Python also provides an lstrip
method, which performs the same operation on leading characters, and strip
, which removes leading and trailing characters from the string. For example:
my_string = "\r\n\n Hello world! \r\n\n" my_string = my_string.lstrip() # will be "Hello world! \r\n\n"
my_string = "\r\n\n Hello world! \r\n\n" my_string = my_string.rstrip() # will be "\r\n\n Hello world!"
my_string = "\r\n\n Hello world! \r\n\n" my_string = my_string.strip() # will be "Hello world!"
We can use lstrip
and rstrip
together to remove leading and trailing characters while preserving characters in the middle of the string, as below:
my_string = "\r\n\n Hello world! \r\n\n" my_string = my_string.lstrip().rstrip() # will be "Hello world!"