quitar - modificar cadenas en python
Eliminar todos los espacios en blanco en una cadena en Python (9)
Quiero eliminar todos los espacios en blanco de una cadena, en ambos extremos, y entre palabras.
Tengo este código de Python:
def my_handle(self):
sentence = '' hello apple ''
sentence.strip()
Pero eso solo elimina el espacio en blanco en ambos lados de la cadena. ¿Cómo elimino todos los espacios en blanco?
Además, la strip tiene algunas variaciones:
Quitar espacios en el principio y final de una cadena:
sentence= sentence.strip()
Quitar espacios en el principio de una cadena:
sentence = sentence.lstrip()
Eliminar espacios en el final de una cadena:
sentence= sentence.rstrip()
Las tres funciones de cadena lstrip
y rstrip
puede tomar los parámetros de la cadena a eliminar, siendo el valor predeterminado todo el espacio en blanco. Esto puede ser útil cuando está trabajando con algo en particular, por ejemplo, podría eliminar solo los espacios pero no las nuevas líneas:
" 1. Step 1/n".strip(" ")
O puede eliminar comas adicionales al leer en una lista de cadenas:
"1,2,3,".strip(",")
Los espacios en blanco incluyen espacio, pestañas y CRLF . Así que una función de cadena elegante y de una sola línea que podemos usar es la traducción :
'' hello apple''.translate(None, '' /n/t/r'')
O si quieres ser cuidadoso:
import string
'' hello apple''.translate(None, string.whitespace)
Para eliminar solo espacios use str.replace() :
sentence = sentence.replace('' '', '''')
Para eliminar todos los caracteres de espacio en blanco (espacio, tabulador, nueva línea, etc.) puede usar str.split() y join
:
sentence = ''''.join(sentence.split())
o una expresión regular:
import re
pattern = re.compile(r''/s+'')
sentence = re.sub(pattern, '''', sentence)
Si desea eliminar solo los espacios en blanco desde el principio y el final, puede usar la str.strip() :
sentence = sentence.strip()
También puede utilizar lstrip
para eliminar los espacios en blanco solo desde el principio de la cadena, y rstrip
para eliminar los espacios en blanco desde el final de la cadena.
Para eliminar los espacios en blanco de principio y final, utilice la strip
.
>> " foo bar ".strip()
"foo bar"
Si desea eliminar los espacios str.strip()
y finales, use str.strip()
:
sentence = '' hello apple''
sentence.strip()
>>> ''hello apple''
Si desea eliminar todos los espacios, use str.replace()
:
sentence = '' hello apple''
sentence.replace(" ", "")
>>> ''helloapple''
Si desea eliminar espacios duplicados, use str.split()
:
sentence = '' hello apple''
" ".join(sentence.split())
>>> ''hello apple''
Ten cuidado:
strip
hace un rstrip y un lstrip (elimina los espacios iniciales y finales, las pestañas, los retornos y los feeds de formularios, pero no los elimina en el centro de la cadena).
Si solo reemplaza los espacios y las pestañas, puede terminar con CRLFs ocultos que parecen coincidir con lo que está buscando, pero no son lo mismo.
Una alternativa es usar expresiones regulares y combinar estos extraños caracteres de espacios en blanco también. Aquí hay unos ejemplos:
Quita TODOS los espacios en una cadena, incluso entre palabras:
import re
sentence = re.sub(r"/s+", "", sentence, flags=re.UNICODE)
Quitar espacios en el principio de una cadena:
import re
sentence = re.sub(r"^/s+", "", sentence, flags=re.UNICODE)
Eliminar espacios en el final de una cadena:
import re
sentence = re.sub(r"/s+$", "", sentence, flags=re.UNICODE)
Elimine espacios tanto en el PRINCIPIO como en el FIN de una cadena:
import re
sentence = re.sub("^/s+|/s+$", "", sentence, flags=re.UNICODE)
Eliminar SOLAMENTE espacios duplicados:
import re
sentence = " ".join(re.split("/s+", sentence, flags=re.UNICODE))
(Todos los ejemplos funcionan tanto en Python 2 como en Python 3)
'' hello /n/tapple''.translate( { ord(c):None for c in '' /n/t/r'' } )
MaK ya señaló el método de "traducir" arriba. Y esta variación funciona con Python 3 (consulte estas preguntas y respuestas ).
import re
sentence = '' hello apple''
re.sub('' '','''',sentence) #helloworld (remove all spaces)
re.sub('' '','' '',sentence) #hello world (remove double spaces)