Para completar, también se puede utilizar:
mystring = mystring.strip() # the while loop will leave a trailing space,
# so the trailing whitespace must be dealt with
# before or after the while loop
while ' ' in mystring:
mystring = mystring.replace(' ', ' ')
la que debe trabajar rápidamente en cadenas con relativamente pocos espacios (más rápido que re
en estas situaciones).
En cualquier escenario, Alex Martelli's split/join solution funciona al menos tan rápido (generalmente mucho más).
En su ejemplo, utilizando los valores por defecto de timeit.Timer.repeat(), me sale el siguiente horario:
str.replace: [1.4317800167340238, 1.4174888149192384, 1.4163512401715934]
re.sub: [3.741931446594549, 3.8389395858970374, 3.973777672860706]
split/join: [0.6530919432498195, 0.6252146571700905, 0.6346594329726258]
EDIT:
encontré con que proporciona this post una comparación bastante larga de las velocidades de estos métodos.
probablemente debería decir 'espacios en blanco múltiples sustituto con un solo espacio * *' desde el espacio en blanco es una clase de caracteres (pestañas, saltos de línea, etc.) –