Comment supprimer les espaces blancs 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"
Comment supprimer les espaces blancs 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"
Réponses:
Un seul espace ou tous les espaces consécutifs? Si le second, alors les chaînes ont déjà une .strip()
méthode:
>>> ' Hello '.strip()
'Hello'
>>> ' Hello'.strip()
'Hello'
>>> 'Bob has a cat'.strip()
'Bob has a cat'
>>> ' Hello '.strip() # ALL consecutive spaces at both ends removed
'Hello'
Si vous n'avez besoin que 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 les str.strip()
autres espaces sont également supprimés (par exemple, les tabulations et les retours à la ligne). Pour supprimer uniquement les espaces, vous pouvez spécifier le caractère à supprimer comme argument strip
, c'est- à -dire:
>>> " Hello\n".strip(" ")
'Hello\n'
rstrip()
fonction. :-)
strip
au lieu de trim
, isinstance
au lieu de instanceof
, list
au lieu de array
, etc., etc. Pourquoi ne pas simplement utiliser les noms que tout le monde connaît ?? geez: P
strip
le cas de, je suis complètement d'accord, mais une liste est complètement différente d'un tableau.
Comme indiqué dans les réponses ci-dessus
myString.strip()
supprimera 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 la documentation
strip
n'est pas limité aux caractères d'espaces 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()
myString.strip()
ne répond à aucune des questions que j'ai posées.
Je voulais supprimer les espaces trop nombreux dans une chaîne (également entre la chaîne, pas seulement au début ou à la fin). J'ai fait ça, parce que je ne sais pas comment 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)
Cela remplace les espaces doubles dans un espace jusqu'à ce que vous n'ayez plus d'espace double
Je n'ai pas trouvé 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)))
Si vous souhaitez couper le nombre spécifié d'espaces de gauche à droite , vous pouvez le faire:
def remove_outer_spaces(text, num_of_leading, num_of_trailing):
text = list(text)
for i in range(num_of_leading):
if text[i] == " ":
text[i] = ""
else:
break
for i in range(1, num_of_trailing+1):
if text[-i] == " ":
text[-i] = ""
else:
break
return ''.join(text)
txt1 = " MY name is "
print(remove_outer_spaces(txt1, 1, 1)) # result is: " MY name is "
print(remove_outer_spaces(txt1, 2, 3)) # result is: " MY name is "
print(remove_outer_spaces(txt1, 6, 8)) # result is: "MY name is"
Cela peut également être fait avec une expression régulière
import re
input = " Hello "
output = re.sub(r'^\s+|\s+$', '', input)
# output = 'Hello'
Comment supprimer les espaces blancs de début et de fin d'une chaîne en Python?
La solution ci-dessous supprimera donc les espaces blancs avant et arrière ainsi que les espaces blancs intermédiaires. Comme si vous avez besoin d'obtenir des valeurs de chaîne claires sans plusieurs espaces blancs.
>>> str_1 = ' Hello World'
>>> print(' '.join(str_1.split()))
Hello World
>>>
>>>
>>> str_2 = ' Hello World'
>>> print(' '.join(str_2.split()))
Hello World
>>>
>>>
>>> str_3 = 'Hello World '
>>> print(' '.join(str_3.split()))
Hello World
>>>
>>>
>>> str_4 = 'Hello World '
>>> print(' '.join(str_4.split()))
Hello World
>>>
>>>
>>> str_5 = ' Hello World '
>>> print(' '.join(str_5.split()))
Hello World
>>>
>>>
>>> str_6 = ' Hello World '
>>> print(' '.join(str_6.split()))
Hello World
>>>
>>>
>>> str_7 = 'Hello World'
>>> print(' '.join(str_7.split()))
Hello World
Comme vous pouvez le voir, cela supprimera tous les espaces blancs multiples de la chaîne (la sortie est Hello World
pour tous). L'emplacement n'a pas d'importance. Mais si vous avez vraiment besoin d'espaces blancs de début et de fin, alors ce strip()
serait trouvé.