Hvordan beskærer jeg mellemrum?

Findes der en Python-funktion, der kan trimme mellemrum (mellemrum og tabulatorer) fra en streng?

Eksempel: \t example string\texample string

Løsning

Hvidt mellemrum på begge sider:

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

Whitespace på højre side:

s = s.rstrip()

Whitespace på venstre side:

s = s.lstrip()

Som thedz påpeger, kan du angive et argument for at fjerne vilkårlige tegn til en af disse funktioner som dette:

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

Dette vil fjerne alle mellemrum, \t, \n eller \r tegn fra venstre side, højre side eller begge sider af strengen.

Ovenstående eksempler fjerner kun tegn fra venstre og højre side af strings. Hvis du også ønsker at fjerne tegn fra midten af en streng, skal du prøve re.sub:

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

Det skulle udskrive:

astringexample
Kommentarer (11)

For ledende og afsluttende mellemrum:

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

Ellers virker et regulært udtryk:

import re
pat = re.compile(r'\s+')
s = '  \t  foo   \t   bar \t  '
print pat.sub('', s) # prints "foobar"
Kommentarer (3)
#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 ']
Kommentarer (0)