Ein regulärer Ausdruck kann verwendet werden, um mehr Kontrolle über die zu kombinierenden Leerzeichen zu haben.
Für die Übereinstimmung mit Unicode-Whitespace:
import re
_RE_COMBINE_WHITESPACE = re.compile(r"\s+")
my_str = _RE_COMBINE_WHITESPACE.sub(" ", my_str).strip()
Um nur ASCII-Whitespace abzugleichen:
import re
_RE_COMBINE_WHITESPACE = re.compile(r"(?a:\s+)")
_RE_STRIP_WHITESPACE = re.compile(r"(?a:^\s+|\s+$)")
my_str = _RE_COMBINE_WHITESPACE.sub(" ", my_str)
my_str = _RE_STRIP_WHITESPACE.sub("", my_str)
Nur ASCII-Whitespace abzugleichen ist manchmal unerlässlich, um Steuerzeichen wie x0b, x0c, x1c, x1d, x1e, x1f zu erhalten.
Referenz:
Über \s
:
Für Unicode (str)-Muster: Passt auf Unicode-Whitespace-Zeichen (einschließlich [ \t\n\r\f\v ], aber auch viele andere Zeichen, zum Beispiel das nicht umbrechende Leerzeichen, die in vielen Sprachen durch typografische Regeln vorgeschrieben sind). Wenn das ASCII-Flag verwendet wird, werden nur [ \t\n\r\f\v ] übereinstimmt.
Über re.ASCII
:
Machen Sie \w , \W , \b , \B , \d , \D , \s y \S einen reinen ASCII-Abgleich anstelle eines vollständigen Unicode-Abgleichs durchführen. Dies ist nur für Unicode-Muster sinnvoll Mustern sinnvoll und wird bei Byte-Mustern ignoriert. Entspricht dem Inline Flagge (?a).
strip()
entfernt alle führenden und nachgestellten Leerzeichen.