Finnes det en Python-funksjon som trimmer mellomrom (mellomrom og tabulatorer) fra en streng?
Eksempel: \t eksempelstreng\t
→ eksempelstreng
Whitespace på begge sider:
s = " \t a string example\t "
s = s.strip()
Whitespace på høyre side:
s = s.rstrip()
Whitespace på venstre side:
s = s.lstrip()
Som thedz påpeker, kan du gi et argument for å fjerne vilkårlige tegn til noen av disse funksjonene som dette:
s = s.strip(' \t\n\r')
Dette vil fjerne alle mellomrom, \t
, \n
eller \r
tegn fra venstre side, høyre side eller begge sider av strengen.
Eksemplene ovenfor fjerner bare tegn fra venstre og høyre side av strenger. Hvis du også vil fjerne tegn fra midten av en streng, kan du prøve re.sub
:
import re
print re.sub('[\s+]', '', s)
Det bør skrives ut:
astringexample
For ledende og etterfølgende mellomrom:
s = ' foo \t '
print s.strip() # prints "foo"
Ellers fungerer et regulært uttrykk:
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 ']