¿Cómo elimino los espacios en blanco iniciales y finales de una cadena en Python?
Por ejemplo:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
¿Cómo elimino los espacios en blanco iniciales y finales de una cadena en Python?
Por ejemplo:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
Respuestas:
¿Solo un espacio o todos los espacios consecutivos? Si es el segundo, las cadenas ya tienen un .strip()
método:
>>> ' 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'
Sin embargo, si solo necesita eliminar un espacio, puede hacerlo con:
def strip_one_space(s):
if s.endswith(" "): s = s[:-1]
if s.startswith(" "): s = s[1:]
return s
>>> strip_one_space(" Hello ")
' Hello'
Además, tenga en cuenta que también str.strip()
elimina otros caracteres de espacio en blanco (por ejemplo, pestañas y líneas nuevas). Para eliminar solo espacios, puede especificar el carácter para eliminar como argumento strip
, es decir:
>>> " Hello\n".strip(" ")
'Hello\n'
rstrip()
función. :-)
strip
lugar de trim
, en isinstance
lugar de instanceof
, en list
lugar de array
, etc., etc. ¿Por qué no usar los nombres con los que todos están familiarizados ?? Dios: P
strip
el caso, estoy completamente de acuerdo, pero una lista es completamente diferente de una matriz.
Como se señaló en las respuestas anteriores
myString.strip()
eliminará todos los espacios en blanco iniciales y finales, como \ n, \ r, \ t, \ f, espacio.
Para mayor flexibilidad, use lo siguiente
myString.lstrip()
myString.rstrip()
myString.strip('\n')
o myString.lstrip('\n\r')
o myString.rstrip('\n\t')
y así sucesivamente.Más detalles están disponibles en los documentos
strip
tampoco se limita a los espacios en blanco:
# remove all leading/trailing commas, periods and hyphens
title = title.strip(',.-')
Esto eliminará todos los espacios en blanco iniciales y finales en myString
:
myString.strip()
myString.strip()
no responde a ninguna de las preguntas que he formulado.
Quería eliminar los espacios demasiado en una cadena (también entre la cadena, no solo al principio o al final). Hice esto, porque no sé cómo hacerlo de otra manera:
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)
Esto reemplaza los espacios dobles en un espacio hasta que ya no tenga espacios dobles
No pude encontrar una solución a lo que estaba buscando, así que creé algunas funciones personalizadas. Puedes probarlos.
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 desea recortar el número especificado de espacios de izquierda a derecha , puede hacer esto:
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"
Esto también se puede hacer con una expresión regular
import re
input = " Hello "
output = re.sub(r'^\s+|\s+$', '', input)
# output = 'Hello'
¿Cómo elimino los espacios en blanco iniciales y finales de una cadena en Python?
Entonces, la solución a continuación eliminará los espacios en blanco iniciales y finales, así como los espacios en blanco intermedios también. Como si necesita obtener valores de cadena claros sin espacios en blanco múltiples.
>>> 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
Como puede ver, esto eliminará todos los espacios en blanco múltiples en la cadena (la salida es Hello World
para todos). La ubicación no importa. Pero si realmente necesita espacios en blanco iniciales y finales, entonces strip()
sería encontrar.