1153 votes

Comment couper les espaces (y compris les onglets)?

Est-il une fonction qui limitera pas uniquement des espaces pour les espaces, mais aussi les onglets?

1694voto

James Thompson Points 15464

Espace blanc sur les deux côtés:

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

Les espaces sur le côté droit:

s = s.rstrip()

Les espaces sur le côté gauche:

s = s.lstrip()

Comme thedz points, vous pouvez fournir un argument à la bande de caractères arbitraires à l'une de ces fonctions comme ceci:

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

Cette bande de tout l'espace, \t, \n, \r, les personnages de la gauche, de droite ou des deux côtés de la chaîne.

79voto

gcb Points 2264

python garniture méthode est appelée bande de gaza.

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

22voto

ars Points 35803

Pour l'attaque et de fuite des espaces:

s = '   foo    \t   '
print s.strip()

Sinon, une expression régulière œuvres:

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

20voto

Lucas Points 303

Vous pouvez également utiliser très simples, et des fonctions de base: str.replace(), qui fonctionne avec les espaces et les tabulations:

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

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

Simple et facile.

12voto

robert king Points 5369
#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 ']

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X