Esta pregunta solo me hizo hablar con colegas del trabajo sobre desnudarme durante 3 minutos. Para cualquier otra persona que se uniera a mitad de camino, habrían pensado que todos trabajábamos un poco en trabajos nocturnos.
Whitecat
Respuestas:
1737
¿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:
Si necesita la función de tira, por ejemplo, una función de mapa, puede acceder a ella a través de str.strip (), como así map (str.strip, collection_of_s)
Ward
1
¿Hay alguna manera de recortar solo los espacios en blanco en los extremos?
Nikhil Girraj
2
@killthrush Gracias por la referencia, pero creo que te refieres a la rstrip()función. :-)
Nikhil Girraj
14
A veces siento que Python evita deliberadamente los nombres bien aceptados y significativos que usa la gran mayoría de los idiomas para ser "únicos" y "diferentes", en striplugar de trim, en isinstancelugar de instanceof, en listlugar de array, etc., etc. ¿Por qué no usar los nombres con los que todos están familiarizados ?? Dios: P
Gershom
3
@GershomMaes en stripel caso, estoy completamente de acuerdo, pero una lista es completamente diferente de una matriz.
JFA
262
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
Elimina solo los espacios en blanco iniciales:myString.lstrip()
Elimina solo los caracteres de espacio en blanco al final :myString.rstrip()
Elimina caracteres específicos de espacios en blanco: myString.strip('\n')o myString.lstrip('\n\r')o myString.rstrip('\n\t')y así sucesivamente.
Esta publicación solo tiene código, no explica qué hace la función. ¿Elimina los espacios en blanco iniciales o finales, o ambos? ¿Elimina solo espacios o todo tipo de espacios en blanco? ¿Puedes hacer que elimine solo espacios entonces, o hay otra función para hacerlo? Si elimina los espacios en blanco iniciales y finales, ¿puede hacer que elimine solo uno de los dos, o hay / hay otras funciones para hacer el trabajo? myString.strip()no responde a ninguna de las preguntas que he formulado.
EKons
8
Para ser justos, OP solicitó específicamente un método que elimine los espacios en blanco iniciales y finales de una cadena. Buena respuesta para mí
Denis Lins
21
Quieres tira ():
myphrases =[" Hello "," Hello","Hello ","Bob has a cat"]for phrase in myphrases:print phrase.strip()
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:
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:breakfor i in range(1, num_of_trailing+1):if text[-i]==" ":
text[-i]=""else:breakreturn''.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"
¿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()))HelloWorld>>>>>>>>> str_2 =' Hello World'>>>print(' '.join(str_2.split()))HelloWorld>>>>>>>>> str_3 ='Hello World '>>>print(' '.join(str_3.split()))HelloWorld>>>>>>>>> str_4 ='Hello World '>>>print(' '.join(str_4.split()))HelloWorld>>>>>>>>> str_5 =' Hello World '>>>print(' '.join(str_5.split()))HelloWorld>>>>>>>>> str_6 =' Hello World '>>>print(' '.join(str_6.split()))HelloWorld>>>>>>>>> str_7 ='Hello World'>>>print(' '.join(str_7.split()))HelloWorld
Como puede ver, esto eliminará todos los espacios en blanco múltiples en la cadena (la salida es Hello Worldpara todos). La ubicación no importa. Pero si realmente necesita espacios en blanco iniciales y finales, entonces strip()sería encontrar.
Respuestas:
¿Solo un espacio o todos los espacios consecutivos? Si es el segundo, las cadenas ya tienen un
.strip()
método:Sin embargo, si solo necesita eliminar un espacio, puede hacerlo con:
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 argumentostrip
, es decir:fuente
rstrip()
función. :-)strip
lugar detrim
, enisinstance
lugar deinstanceof
, enlist
lugar dearray
, etc., etc. ¿Por qué no usar los nombres con los que todos están familiarizados ?? Dios: Pstrip
el caso, estoy completamente de acuerdo, pero una lista es completamente diferente de una matriz.Como se señaló en las respuestas anteriores
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')
omyString.lstrip('\n\r')
omyString.rstrip('\n\t')
y así sucesivamente.Más detalles están disponibles en los documentos
fuente
strip
tampoco se limita a los espacios en blanco:fuente
Esto eliminará todos los espacios en blanco iniciales y finales en
myString
:fuente
myString.strip()
no responde a ninguna de las preguntas que he formulado.Quieres tira ():
fuente
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:
Esto reemplaza los espacios dobles en un espacio hasta que ya no tenga espacios dobles
fuente
No pude encontrar una solución a lo que estaba buscando, así que creé algunas funciones personalizadas. Puedes probarlos.
fuente
Si desea recortar el número especificado de espacios de izquierda a derecha , puede hacer esto:
fuente
Esto también se puede hacer con una expresión regular
fuente
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.
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, entoncesstrip()
sería encontrar.fuente