Gibt es eine Python-Funktion, die Whitespace (Leerzeichen und Tabulatoren) aus einer Zeichenfolge trimmen wird?
Beispiel: Beispielstring\t
→ Beispielstring
Weißer Raum auf beiden Seiten:
s = " \t a string example\t "
s = s.strip()
Whitespace auf der rechten Seite:
s = s.rstrip()
Whitespace auf der linken Seite:
s = s.lstrip()
Wie thedz anmerkt, können Sie jeder dieser Funktionen ein Argument zum Entfernen beliebiger Zeichen hinzufügen:
s = s.strip(' \t\n\r')
Dies entfernt alle Leerzeichen, "t", "n" oder "r" von der linken Seite, der rechten Seite oder beiden Seiten der Zeichenkette.
Die obigen Beispiele entfernen nur Zeichen von der linken und rechten Seite von Zeichenketten. Wenn Sie auch Zeichen aus der Mitte einer Zeichenkette entfernen möchten, versuchen Sie es mit "re.sub":
import re
print re.sub('[\s+]', '', s)
Das sollte ausgedruckt werden:
astringexample
Für vorangestellte und nachgestellte Whitespaces:
s = ' foo \t '
print s.strip() # prints "foo"
Ansonsten funktioniert ein regulärer Ausdruck:
import re
pat = re.compile(r'\s+')
s = ' \t foo \t bar \t '
print pat.sub('', s) # prints "foobar"
#how to trim a multi line string or a file
s=""" line one
\tline two\t
line three """
#line1 starts with a space, #2 starts and ends with a tab, #3 ends with a space.
s1=s.splitlines()
print s1
[' line one', '\tline two\t', 'line three ']
print [i.strip() for i in s1]
['line one', 'line two', 'line three']
#more details:
#we could also have used a forloop from the begining:
for line in s.splitlines():
line=line.strip()
process(line)
#we could also be reading a file line by line.. e.g. my_file=open(filename), or with open(filename) as myfile:
for line in my_file:
line=line.strip()
process(line)
#moot point: note splitlines() removed the newline characters, we can keep them by passing True:
#although split() will then remove them anyway..
s2=s.splitlines(True)
print s2
[' line one\n', '\tline two\t\n', 'line three ']