Υπάρχει μια συνάρτηση της Python που να κόβει τα κενά (κενά και tabs) από μια συμβολοσειρά;
Παράδειγμα: \t example string\t
→ example string
Λευκό διάστημα και στις δύο πλευρές:
s = " \t a string example\t "
s = s.strip()
Λευκό διάστημα στη δεξιά πλευρά:
s = s.rstrip()
Λευκό διάστημα στην αριστερή πλευρά:
s = s.lstrip()
Όπως επισημαίνει η thedz, μπορείτε να δώσετε ένα όρισμα για την αφαίρεση αυθαίρετων χαρακτήρων σε οποιαδήποτε από αυτές τις συναρτήσεις, όπως αυτή:
s = s.strip(' \t\n\r')
Αυτό θα αφαιρέσει οποιουσδήποτε χαρακτήρες κενό, \t
, \n
ή \r
από την αριστερή, τη δεξιά ή και τις δύο πλευρές της συμβολοσειράς.
Τα παραπάνω παραδείγματα αφαιρούν συμβολοσειρές μόνο από την αριστερή και τη δεξιά πλευρά των συμβολοσειρών. Αν θέλετε να αφαιρέσετε χαρακτήρες και από τη μέση μιας συμβολοσειράς, δοκιμάστε re.sub
:
import re
print re.sub('[\s+]', '', s)
Αυτό θα πρέπει να εκτυπωθεί:
astringexample
Για το πρώτο και το τελευταίο κενό διάστημα:
s = ' foo \t '
print s.strip() # prints "foo"
Διαφορετικά, μια κανονική έκφραση λειτουργεί:
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 ']