1220 Stimmen

Wie schneide ich Leerzeichen ab?

Gibt es eine Python-Funktion, die Whitespace (Leerzeichen und Tabulatoren) aus einer Zeichenfolge trimmen wird?

"  \t example string\t  "      "example string"

1777voto

James Thompson Punkte 44724

Für Leerzeichen auf beiden Seiten, verwenden Sie str.strip :

s = "  \t a string example\t  "
s = s.strip()

Für Leerzeichen auf der rechten Seite verwenden Sie str.rstrip :

s = s.rstrip()

Für Leerzeichen auf der linken Seite, verwenden Sie str.lstrip :

s = s.lstrip()

Sie können jeder dieser Funktionen ein Argument übergeben, um beliebige Zeichen zu entfernen, etwa so:

s = s.strip(' \t\n\r')

Dadurch wird jeder Platz gestrichen, \t , \n o \r Zeichen von beiden Seiten der Zeichenkette.

In den obigen Beispielen werden nur die Zeichen auf der linken und rechten Seite von Zeichenketten entfernt. Wenn Sie auch Zeichen aus der Mitte einer Zeichenkette entfernen wollen, versuchen Sie re.sub :

import re
print(re.sub('[\s+]', '', s))

Das sollte ausgedruckt werden:

astringexample

85voto

gcb Punkte 13057

Python trim Methode wird aufgerufen strip :

str.strip() #trim
str.lstrip() #ltrim
str.rstrip() #rtrim

26voto

ars Punkte 112843

Für vorangestellte und nachgestellte Whitespaces:

s = '   foo    \t   '
print s.strip() # prints "foo"

Andernfalls funktioniert ein regulärer Ausdruck:

import re
pat = re.compile(r'\s+')
s = '  \t  foo   \t   bar \t  '
print pat.sub('', s) # prints "foobar"

24voto

Lucas Punkte 3097

Sie können auch sehr einfache und grundlegende Funktionen verwenden: str.replace() arbeitet mit Leerzeichen und Tabulatoren:

>>> whitespaces = "   abcd ef gh ijkl       "
>>> tabs = "        abcde       fgh        ijkl"

>>> print whitespaces.replace(" ", "")
abcdefghijkl
>>> print tabs.replace(" ", "")
abcdefghijkl

Einfach und leicht.

13voto

robert king Punkte 15261
#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 ']

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X