Eu quero eliminar todo o espaço em branco de uma string, nas duas extremidades e entre as palavras.
Eu tenho esse código Python:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
Mas isso apenas elimina o espaço em branco nos dois lados da string. Como removo todo o espaço em branco?
python
trim
removing-whitespace
co2f2e
fonte
fonte
hello apple
?helloapple
?Respostas:
Se você deseja remover os espaços iniciais e finais, use
str.strip()
:Se você deseja remover todos os caracteres de espaço, use
str.replace()
:(Nota: isso remove apenas o caractere de espaço ASCII "normal",
' ' U+0020
mas não qualquer outro espaço em branco )Se você deseja remover espaços duplicados, use
str.split()
:fonte
sentence.join(str_list)
o python para juntar itens do str_list comsentence
como separador."".join(sentence.split())
é de fato a solução canônica, removendo com eficiência todo o espaço em branco, e não apenas os espaços. Mark ByersA excelente resposta de provavelmente deveria ter sido aceita em vez dessa resposta menos aplicável.Para remover apenas espaços, use
str.replace
:Para remover todos os caracteres em branco (espaço, tabulação, nova linha, e assim por diante) você pode usar
split
em seguidajoin
:ou uma expressão regular:
Se você deseja remover apenas os espaços em branco do começo e do fim, use
strip
:Você também pode usar
lstrip
para remover o espaço em branco somente do início da string erstrip
para remover o espaço em branco do final da string.fonte
yourstr.translate(str.maketrans('', '', ' \n\t\r'))
Uma alternativa é usar expressões regulares e combinar esses caracteres estranhos em espaço em branco . aqui estão alguns exemplos:
Remova TODOS os espaços de uma string, mesmo entre as palavras:
Remova os espaços no início de uma sequência:
Remova os espaços no FIM de uma sequência:
Remova os espaços no BEGINNING e no END de uma string:
Remova os espaços ONLY DUPLICATE:
(Todos os exemplos funcionam em Python 2 e Python 3)
fonte
O espaço em branco inclui espaço, guias e CRLF . Portanto, uma função de string elegante e de uma linha que podemos usar é
str.translate
:Python 3
OU se você quiser ser completo:
Python 2
OU se você quiser ser completo:
fonte
\xc2\xa0
ans.translate( None, string.whitespace )
produz apenasbuiltins.TypeError: translate() takes exactly one argument (2 given)
para mim. O Docs diz que o argumento é uma tabela de conversão, consulte string.maketrans (). Mas veja o comentário de Amnon Harel, abaixo.' hello apple'.translate(str.maketrans('', '', string.whitespace))
Nota: é melhor criar uma variável para armazenar a tabela, se você pretende fazer isso várias vezes.Para remover os espaços em branco do começo e do fim, use
strip
.fonte
MaK já apontou o método "translate" acima. E essa variação funciona com o Python 3 (consulte as perguntas e respostas ).
fonte
xxx.translate( { ord(c) :None for c in string.whitespace } )
para mais detalhes.Seja cuidadoso:
strip
faz um rstrip e lstrip (remove espaços iniciais e finais, tabulações, retornos e feeds de formulário, mas não os remove no meio da sequência).Se você substituir apenas espaços e guias, poderá acabar com CRLFs ocultos que parecem corresponder ao que você está procurando, mas não são os mesmos.
fonte
fonte
Além disso, a tira tem algumas variações:
Remova espaços no BEGINNING e END de uma string:
Remova os espaços no início de uma sequência:
Remova os espaços no FIM de uma sequência:
Todas as três funções de sequência
strip
lstrip
erstrip
podem levar os parâmetros da sequência a serem removidos, com o padrão sendo todo o espaço em branco. Isso pode ser útil quando você estiver trabalhando com algo específico, por exemplo, você pode remover apenas espaços, mas não novas linhas:Ou você pode remover vírgulas extras ao ler em uma lista de cadeias:
fonte
Documentos do Python:
fonte
re
já foi sugerido antes, mas descobri que a resposta real ao título da pergunta estava um pouco escondida entre todas as outras opções.