Comment supprimer les espaces de début et de fin d'une chaîne en Python?
Par exemple:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
Juste un espace ou tous ces espaces? Si le second, alors les chaînes ont déjà une méthode .strip()
:
>>> ' Hello '.strip()
'Hello'
>>> ' Hello'.strip()
'Hello'
>>> 'Bob has a cat'.strip()
'Bob has a cat'
>>> ' Hello '.strip() # ALL spaces at ends removed
'Hello'
Si vous avez seulement besoin de supprimer un espace, vous pouvez le faire avec:
def strip_one_space(s):
if s.endswith(" "): s = s[:-1]
if s.startswith(" "): s = s[1:]
return s
>>> strip_one_space(" Hello ")
' Hello'
Notez également que str.strip()
supprime également les autres espaces (par exemple, les tabulations et les nouvelles lignes). Pour supprimer uniquement les espaces, vous pouvez spécifier le caractère à supprimer en tant qu'argument pour strip
, c'est-à-dire:
>>> " Hello\n".strip(" ")
'Hello\n'
Comme indiqué dans les réponses ci-dessus
myString.strip()
supprime tous les espaces blancs de début et de fin, tels que\n,\r,\t,\f, espace.
Pour plus de flexibilité, utilisez ce qui suit
myString.lstrip()
myString.rstrip()
myString.strip('\n')
ou myString.lstrip('\n\r')
ou myString.rstrip('\n\t')
et ainsi de suite.Plus de détails sont disponibles dans docs
strip
n'est pas limité aux caractères d'espacement non plus:
# remove all leading/trailing commas, periods and hyphens
title = title.strip(',.-')
Cela supprimera tous les espaces de début et de fin dans myString
:
myString.strip()
Vous voulez strip ():
myphrases = [ " Hello ", " Hello", "Hello ", "Bob has a cat" ]
for phrase in myphrases:
print phrase.strip()
Je voulais supprimer les espaces trop nombreux dans une chaîne (également entre les chaînes, pas seulement au début ou à la fin). J'ai fait ceci, parce que je ne sais pas comment le faire autrement:
string = "Name : David Account: 1234 Another thing: something "
ready = False
while ready == False:
pos = string.find(" ")
if pos != -1:
string = string.replace(" "," ")
else:
ready = True
print(string)
Ceci remplace les espaces doubles dans un espace jusqu’à ce que vous n’ayez plus d’espace double.
Je ne pouvais pas trouver de solution à ce que je cherchais, j'ai donc créé des fonctions personnalisées. Vous pouvez les essayer.
def cleansed(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
# return trimmed(s.replace('"', '').replace("'", ""))
return trimmed(s)
def trimmed(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
ss = trim_start_and_end(s).replace(' ', ' ')
while ' ' in ss:
ss = ss.replace(' ', ' ')
return ss
def trim_start_and_end(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
return trim_start(trim_end(s))
def trim_start(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
chars = []
for c in s:
if c is not ' ' or len(chars) > 0:
chars.append(c)
return "".join(chars).lower()
def trim_end(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
chars = []
for c in reversed(s):
if c is not ' ' or len(chars) > 0:
chars.append(c)
return "".join(reversed(chars)).lower()
s1 = ' b Beer '
s2 = 'Beer b '
s3 = ' Beer b '
s4 = ' bread butter Beer b '
cdd = trim_start(s1)
cddd = trim_end(s2)
clean1 = cleansed(s3)
clean2 = cleansed(s4)
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s1, len(s1), cdd, len(cdd)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s2, len(s2), cddd, len(cddd)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s3, len(s3), clean1, len(clean1)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s4, len(s4), clean2, len(clean2)))