Eliminar/Reemplazar signos de puntuación en Python

Un pequeño ejemplo de cómo eliminar signos de puntuación de una cadena de caractéres en Python

23/10/2012 Available in en PythonTips and Tricks

A continuación muestro una forma de eliminar los signos de puntuación de una cadena de caractéres en Python. Los signos de puntuación son reemplazados por caracteres en blanco.

import re, string

def remove_punctuation ( text ):
  return re.sub('[%s]' % re.escape(string.punctuation), ' ', text)
Ejecutando un ejemplo
>>> remove_punctuation ("El perro, de San Roque, no tiene rabo; ni nunca lo ha tenido.")
'El perro  de San Roque  no tiene rabo  ni nunca lo ha tenido '

Si queremos hacer la función más general, para reemplazar los signos de puntuación por cualquier otra cadena, simplemente hay que hacer la siguiente modificación en la función.

import re, string

def replace_punctuation ( text, replace ):
  return re.sub('[%s]' % re.escape(string.punctuation), replace, text)
Ejecutando el código de arriba:
>>> replace_punctuation ("El perro, de San Roque, no tiene rabo; ni nunca lo ha tenido.", '[stop]')
'El perro[stop] de San Roque[stop] no tiene rabo[stop] ni nunca lo ha tenido[stop]'