How do I strip all leading and trailing punctuation in Python?

SparkAndShine picture SparkAndShine · May 14, 2016 · Viewed 11.7k times · Source

I know how to remove all the punctuation in a string.

import string

s = '.$ABC-799-99,#'

table = string.maketrans("","") # to remove punctuation
new_s = s.translate(table, string.punctuation)

print(new_s)
# Output
ABC79999

How do I strip all leading and trailing punctuation in Python? The desired result of '.$ABC-799-99,#' is 'ABC-799-99'.

Answer

Padraic Cunningham picture Padraic Cunningham · May 14, 2016

You do exactly what you mention in your question, you just str.strip it.

from string import punctuation
s = '.$ABC-799-99,#'

print(s.strip(punctuation))

Output:

 ABC-799-99

str.strip can take multiple characters to remove.

If you just wanted to remove leading punctuation you could str.lstrip:

s.lstrip(punctuation)

Or rstrip any trailing punctuation:

 s.rstrip(punctuation)