Como removo todos os espaços em uma string python? Por exemplo, eu quero que uma string strip my spaces
seja transformada stripmyspaces
, mas não consigo fazer isso com strip()
:
>>> 'strip my spaces'.strip()
'strip my spaces'
python
python-3.x
spaces
strip
nome de usuário errado
fonte
fonte
Respostas:
Aproveitando o comportamento do str.split sem o parâmetro sep:
Se você deseja apenas remover espaços em vez de todos os espaços em branco:
Otimização prematura
Mesmo que a eficiência não seja o objetivo principal - escrever código claro -, aqui estão alguns horários iniciais:
Observe que o regex é armazenado em cache, portanto, não é tão lento quanto você imagina. Compilá-lo de antemão ajuda alguns, mas só importa na prática se você chamar isso muitas vezes:
Embora o re.sub seja 11,3x mais lento, lembre-se de que seus gargalos estão garantidos em outros lugares. A maioria dos programas não notaria a diferença entre nenhuma dessas três opções.
fonte
\s+
substituição. Eu ficaria com re.s.translate
método por acaso? Provavelmente, supera todos os métodos mostrados nesta página.None
- embora, surpreendentemente, que o torna mais lento ...myString.translate(None, " \t\r\n\v")
. Leva apenas 83% do tempo que a técnica mais rápida (dividir e unir) de Roger. Não tenho certeza se ele cobre todos os caracteres de espaço em branco que a divisão faz, mas provavelmente será suficiente para a maioria dos aplicativos ASCII.Também lida com caracteres em branco em que você não está pensando (acredite, há muitos).
fonte
Alternativamente,
E aqui está a versão do Python3:
fonte
NameError: name 'string' is not defined
.import string
O mais simples é usar o replace:
Como alternativa, use uma expressão regular:
fonte
Remova os espaços iniciais em Python
Remover os espaços finais ou finais no Python
Remova os whiteSpaces do início e do fim da string em Python
Remova todos os espaços em python
fonte
Experimente uma regex com
re.sub
. Você pode procurar por todos os espaços em branco e substituir por uma sequência vazia.\s
no seu padrão corresponderá a caracteres de espaço em branco - e não apenas a um espaço (guias, novas linhas etc.). Você pode ler mais sobre isso no manual .fonte
fonte
Conforme mencionado por Roger Pate, o seguinte código funcionou para mim:
Estou usando o Jupyter Notebook para executar o seguinte código:
fonte
As técnicas convencionais para filtrar uma lista aplicar, embora eles não são tão eficientes quanto o
split/join
outranslate
métodos.Precisamos de um conjunto de espaços em branco:
O
filter
builtin:Uma compreensão da lista (sim, use os colchetes: veja a referência abaixo):
Uma dobra:
Referência:
fonte
TL / DR
Esta solução foi testada usando Python 3.6
Para remover todos os espaços de uma string no Python3, você pode usar a seguinte função:
Para remover qualquer caractere de espaço em branco ('\ t \ n \ r \ x0b \ x0c'), você pode usar a seguinte função:
Explicação
O
str.translate
método Python é um método de classe interno de str, pega uma tabela e retorna uma cópia da string com cada caractere mapeado na tabela de conversão passada. Documentação completa para str.translatePara criar a tabela de conversão
str.maketrans
é usado. Este método é outro método de classe interno destr
. Aqui, usamos apenas um parâmetro, neste caso, um dicionário, onde as chaves são os caracteres a serem substituídos, mapeados para valores com o valor de substituição de caracteres. Retorna uma tabela de conversão para uso comstr.translate
. Documentação completa para str.maketransO
string
módulo em python contém algumas operações e constantes de string comuns.string.whitespace
é uma constante que retorna uma sequência que contém todos os caracteres ASCII considerados em branco. Isso inclui os caracteres espaço, tabulação, avanço de linha, retorno, avanço de formulário e guia vertical. Documentação completa para stringNa segunda função
dict.fromkeys
é usada para criar um dicionário onde as chaves são os caracteres na string retornados porstring.whitespace
cada um com valorNone
. Documentação completa para dict.fromkeysfonte
Se o desempenho ideal não é um requisito e você quer apenas algo simples, você pode definir uma função básica para testar cada caractere usando o método "isspace" incorporado da classe de cadeia de caracteres:
Construir a
no_white_space
string dessa maneira não terá desempenho ideal, mas a solução é fácil de entender.Se você não deseja definir uma função, pode convertê-la em algo vagamente semelhante à compreensão da lista. Empréstimos da
join
solução da resposta principal :fonte