¿Es str.replace (..). Replace (..) ad nauseam un idioma estándar en Python?

Por ejemplo, supongamos que quería que una función escapara de una cadena para usarla en HTML (como en Django'sfiltro de escape):

    def escape(string):
        """
        Returns the given string with ampersands, quotes and angle 
        brackets encoded.
        """
        return string.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace("'", '&#39;').replace('"', '&quot;')

Esto funciona, pero se pone feo rápidamente y parece tener un bajo rendimiento algorítmico (en este ejemplo, la cadena se atraviesa repetidamente 5 veces). Lo que sería mejor es algo como esto:

    def escape(string):
        """
        Returns the given string with ampersands, quotes and angle 
        brackets encoded.
        """
        # Note that ampersands must be escaped first; the rest can be escaped in 
        # any order.
        return replace_multi(string.replace('&', '&amp;'),
                             {'<': '&lt;', '>': '&gt;', 
                              "'": '&#39;', '"': '&quot;'})

¿Existe tal función, o es el idioma estándar de Python para usar lo que escribí antes?

Respuestas a la pregunta(9)

Su respuesta a la pregunta