Nous allons faire quelques hypothèses raisonnables:
(1) Vous voulez vraiment pour remplacer n'importe quelle course de caractères espace avec un seul espace (une course est de longueur 1 ou plus).
(2) Vous souhaitez le même code pour travailler avec un minimum de changements sous Python 2.X avec unicode objets.
(3) Vous ne voulez pas que votre code de supposer des choses qui ne sont pas garantis dans les docs
(4) Vous voulez le même code pour travailler avec un minimum de changements avec Python 3.X str objets.
Actuellement choisi la solution a ces problèmes:
(a) variation " " * 3
de " " * 2
- dire qu'il supprime les doublons des espaces mais pas en triple, quadruple, etc espaces. [échoue exigence 1]
(b) variation "foo\tbar\tzot"
de "foobarzot"
[échoue exigence 1]
(c) lorsque nourris avec un objet unicode, reçoit TypeError: translate() takes exactly one argument (2 given)
[échoue exigence 2]
(d) les utilisations string.whitespace[:-1]
[n'est pas le point 3); l'ordre des caractères dans la chaîne.les espaces ne sont pas garantis]
(e) les utilisations string.whitespace[:-1]
[n'est pas l'exigence 4; en Python 2.X, string.les espaces sont '\t\n\x0b\x0c\r '
; en Python 3.X, c'est '\t\n\r\x0b\x0c']
L' " ".join(s.split())
de réponses et l' re.sub(r"\s+", " ", s)
de réponses n'ont pas ces problèmes.