Coder Perfect

How do I trim whitespace?


Is there a Python function that removes whitespace from a string (spaces and tabs)?

t example stringt example stringt example stringt example stringt example stringt example stringt example stringt example stringt example stringt example stringt example

Asked by Chris

Solution #1

For whitespace on both sides use str.strip:

s = "  \t a string example\t  "
s = s.strip()

For whitespace on the right side use rstrip:

s = s.rstrip()

lstrip: lstrip: lstrip: lstrip: lstrip: lstrip:

s = s.lstrip()

As thedz notes out, any of these functions can take an input to strip arbitrary characters, such as this:

s = s.strip(' \t\n\r')

This will remove any spaces, t, n, or r characters from the string’s left, right, or both sides.

The examples above only remove strings from the left-hand and right-hand sides of strings. If you want to also remove characters from the middle of a string, try re.sub:

import re
print(re.sub('[\s+]', '', s))

That should print out as follows:


Answered by James Thompson

Solution #2

Strip is the Python trim technique.

str.strip() #trim
str.lstrip() #ltrim
str.rstrip() #rtrim

Answered by gcb

Solution #3

For leading and trailing whitespace, use the following formulas:

s = '   foo    \t   '
print s.strip() # prints "foo"

Otherwise, you can use a regular expression:

import re
pat = re.compile(r'\s+')
s = '  \t  foo   \t   bar \t  '
print pat.sub('', s) # prints "foobar"

Answered by ars

Solution #4

You can also use the very basic str.replace() function, which works with whitespaces and tabs:

>>> whitespaces = "   abcd ef gh ijkl       "
>>> tabs = "        abcde       fgh        ijkl"

>>> print whitespaces.replace(" ", "")
>>> print tabs.replace(" ", "")

Simple and easy.

Answered by Lucas

Solution #5

#how to trim a multi line string or a file

s=""" line one
\tline two\t
line three """

#line1 starts with a space, #2 starts and ends with a tab, #3 ends with a space.

print s1
[' line one', '\tline two\t', 'line three ']

print [i.strip() for i in s1]
['line one', 'line two', 'line three']

#more details:

#we could also have used a forloop from the begining:
for line in s.splitlines():

#we could also be reading a file line by line.. e.g. my_file=open(filename), or with open(filename) as myfile:
for line in my_file:

#moot point: note splitlines() removed the newline characters, we can keep them by passing True:
#although split() will then remove them anyway..
print s2
[' line one\n', '\tline two\t\n', 'line three ']

Answered by robert king

Post is based on