Esta pergunta me fez falar com colegas de trabalho sobre a remoção por 3 minutos. Para qualquer um que se juntasse no meio do caminho, eles pensariam que estávamos todos trabalhando um pouco no trabalho noturno.
Whitecat 15/09/16
Respostas:
1736
Apenas um espaço ou todos os espaços consecutivos? Se o segundo, as strings já têm um .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'
Se você precisar remover apenas um espaço, poderá fazê-lo com:
def strip_one_space(s):if s.endswith(" "): s = s[:-1]if s.startswith(" "): s = s[1:]return s
>>> strip_one_space(" Hello ")' Hello'
Além disso, observe que também str.strip()remove outros caracteres de espaço em branco (por exemplo, guias e novas linhas). Para remover apenas espaços, você pode especificar o caractere a ser removido como argumento strip, por exemplo:
Se você precisar a função tira, por exemplo, uma função de mapa, você pode acessá-lo através str.strip (), como assim mapear (str.strip, collection_of_s)
Ward
1
Existe uma maneira de aparar apenas os espaços em branco nas extremidades?
Nikhil Girraj 10/07
2
@ killthrush Obrigado pela referência, mas acho que você quis dizer a rstrip()função. :-)
Nikhil Girraj
14
Às vezes, sinto que o python evita propositalmente os nomes bem aceitos e significativos que a grande maioria das línguas usa para serem "únicos" e "diferentes" - em stripvez de trim, em isinstancevez de instanceof, em listvez de arrayetc. etc. Por que não usar os nomes com os quais todos estão familiarizados ?? geez: P
Gershom
3
@GershomMaes no stripcaso, concordo plenamente, mas uma lista é completamente diferente de uma matriz.
JFA
262
Conforme indicado nas respostas acima
myString.strip()
removerá todos os caracteres de espaço em branco à esquerda e à direita, como \ n, \ r, \ t, \ f, space.
Para mais flexibilidade, use o seguinte
Remove apenas os caracteres de espaço em branco à esquerda :myString.lstrip()
Remove apenas os caracteres de espaço em branco à direita :myString.rstrip()
Remove caracteres em branco específicos : myString.strip('\n')ou myString.lstrip('\n\r')ou myString.rstrip('\n\t')e assim por diante.
Este post possui apenas código, não explica o que a função faz. Remove espaços em branco à esquerda ou à direita, ou ambos? Remove apenas espaços ou todo tipo de espaço em branco? Você pode fazê-lo remover apenas os espaços então ou existe outra função para fazê-lo? Se ele remover os espaços em branco à esquerda e à direita, você poderá remover apenas um dos dois ou há / existem outras funções para fazer o trabalho? myString.strip()responde a nenhuma das perguntas que afirmei.
EKons
8
Para ser justo, o OP solicitou especificamente um método que remove os espaços em branco iniciais e finais de uma string. Resposta suficiente para mim
Denis Lins
21
Você quer strip ():
myphrases =[" Hello "," Hello","Hello ","Bob has a cat"]for phrase in myphrases:print phrase.strip()
Eu queria remover os espaços demais em uma string (também entre a string, não apenas no começo ou no final). Eu fiz isso, porque não sei como fazê-lo de outra forma:
Se você deseja aparar o número especificado de espaços da esquerda e da direita , faça o seguinte:
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"
Como removo o espaço em branco à esquerda e à direita de uma string no Python?
Portanto, a solução abaixo removerá os espaços em branco iniciais e finais, bem como os espaços em branco intermediários. Como se você precisasse obter valores de sequência claros sem vários espaços em branco.
>>> 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 você pode ver, isso removerá todos os vários espaços em branco da string (a saída é Hello Worldpara todos). A localização não importa. Mas se você realmente precisar de espaços em branco à esquerda e à direita, strip()será encontrado.
Respostas:
Apenas um espaço ou todos os espaços consecutivos? Se o segundo, as strings já têm um
.strip()
método:Se você precisar remover apenas um espaço, poderá fazê-lo com:
Além disso, observe que também
str.strip()
remove outros caracteres de espaço em branco (por exemplo, guias e novas linhas). Para remover apenas espaços, você pode especificar o caractere a ser removido como argumentostrip
, por exemplo:fonte
rstrip()
função. :-)strip
vez detrim
, emisinstance
vez deinstanceof
, emlist
vez dearray
etc. etc. Por que não usar os nomes com os quais todos estão familiarizados ?? geez: Pstrip
caso, concordo plenamente, mas uma lista é completamente diferente de uma matriz.Conforme indicado nas respostas acima
removerá todos os caracteres de espaço em branco à esquerda e à direita, como \ n, \ r, \ t, \ f, space.
Para mais flexibilidade, use o seguinte
myString.lstrip()
myString.rstrip()
myString.strip('\n')
oumyString.lstrip('\n\r')
oumyString.rstrip('\n\t')
e assim por diante.Mais detalhes estão disponíveis nos documentos
fonte
strip
também não se limita a caracteres de espaço em branco:fonte
Isso removerá todos os espaços em branco iniciais e finais em
myString
:fonte
myString.strip()
responde a nenhuma das perguntas que afirmei.Você quer strip ():
fonte
Eu queria remover os espaços demais em uma string (também entre a string, não apenas no começo ou no final). Eu fiz isso, porque não sei como fazê-lo de outra forma:
Isso substitui os espaços duplos em um espaço até que você não tenha mais espaços duplos
fonte
Não consegui encontrar uma solução para o que estava procurando, por isso criei algumas funções personalizadas. Você pode experimentá-los.
fonte
Se você deseja aparar o número especificado de espaços da esquerda e da direita , faça o seguinte:
fonte
Isso também pode ser feito com uma expressão regular
fonte
Portanto, a solução abaixo removerá os espaços em branco iniciais e finais, bem como os espaços em branco intermediários. Como se você precisasse obter valores de sequência claros sem vários espaços em branco.
Como você pode ver, isso removerá todos os vários espaços em branco da string (a saída é
Hello World
para todos). A localização não importa. Mas se você realmente precisar de espaços em branco à esquerda e à direita,strip()
será encontrado.fonte