[iniciante] Retirar espaços em branco de string

10,139 views
Skip to first unread message

Ricardo

unread,
May 29, 2015, 8:41:10 AM5/29/15
to python...@googlegroups.com
Oi pessoal,
Estou fazendo um exercício de python e o autor pede para se retirar os espaços internos de uma frase dada como string.
A frase é "subi no onibus". Devo retirar o espaço depois de "subi" e antes de "onibus", juntando numa string só as três palavras.
Alguém saberia dizer como eu faço isso? 

Alysson Bruno

unread,
May 29, 2015, 8:45:53 AM5/29/15
to python-brasil
Existem várias formas de fazer isso, em quais você já pensou? O que você já conseguiu de produção?

paz e amor (love and peace),

Alysson Bruno
===============================================
Palmas(TO)
Brasil

Blog: http://abruno.com


=================================================================
Meu alterego Escritor:

Leia alguns contos que escrevo, não esqueça de me dar sua opinião: http://goo.gl/Wjn4p

=================================================================

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Diego Garcia

unread,
May 29, 2015, 9:07:21 AM5/29/15
to python-brasil
Como é um exercicio, não acho que seja legal passar a resposta de uma vez, mas vou dar uma dica, procure por split e join, tente entender como funcionam e como podem lhe ajudar.
A documentação oficial do python é muito boa também, de uma olhada https://docs.python.org/3.4/library/string.html

[]'s

Glaucos Ginez

unread,
May 29, 2015, 11:44:19 AM5/29/15
to python...@googlegroups.com

Ricardo

unread,
May 29, 2015, 11:46:05 AM5/29/15
to python...@googlegroups.com
Então, eu já tentei usar o comando strip, mas ele apenas retira os espaços das extremidades da string, não os espaços do meio.
O comando join também não me ajuda. 
Também tentei fazer um for e correr pela sting, mas não consigo retirar os espaços em branco...
Eu queria ideias para resolver esse problema, não estou conseguindo pensar numa solução. 

Alexandre Souza

unread,
May 29, 2015, 11:55:04 AM5/29/15
to python...@googlegroups.com
Ricardo,

Posta o código das suas tentativas.

0 - Você pode usar um for considerando **manter** o que for diferente do item X (e.g. tudo que for alfanumérico.), assim se tiver um ou vários não faz diferença.

1 - Você pode usar expressões regulares também. (e.g. "[a-z][A-Z][0-9]" representa apenas letras e números)

Pode ser útil:
* https://docs.python.org/2/library/string.html?highlight=string#module-string
* https://pythex.org/

[ ]'s
-- 
Twitter: @_AleSou || GitHub: alexandre || Reddit: ubbersith
--
[...]o sentido disso tudo é que não há sentido em tentar enlouquecer
para impedir-se de ficar louco...guarde sua sanidade para mais
tarde[...] - Douglas Adams

Vinicius Assef

unread,
May 29, 2015, 11:59:30 AM5/29/15
to python...@googlegroups.com
Sua resposta indica que você já tentou. Isso é muito bom!

Dicas para guiar seu raciocínio:
- Quebre sua frase em uma lista de palavras, tendo o espaço como separador.
- De posse dessa lista de palavras, junte-as sem nenhum separador para formar a frase sem espaços.

Em Python existem várias formas de se fazer isso. Umas usando os recursos da linguagem e outras usando força bruta mesmo.

O importante, agora, é fazer funcionar do jeito que você conseguir.

Vinicius.

Diego Garcia

unread,
May 29, 2015, 12:05:23 PM5/29/15
to python-brasil
Ricardo, legal que você está tentando, o comando que eu falei é o split e não o strip.

Marcelo Valle (BLOOMBERG/ LONDON)

unread,
May 29, 2015, 12:13:19 PM5/29/15
to python...@googlegroups.com
Uma alternativa legal tb seria usar list comprehensions pra converter a string em outra sem espacos, afinal toda string eh uma lista de chars.
Nao sei qual solucao eh mais rapida, a que usa split e join ou essa, valeria a pena implementar as duas e comparar.


<< ideas don't deserve respect >>

Ricardo

unread,
May 29, 2015, 12:17:10 PM5/29/15
to python...@googlegroups.com
Tentei fazer dessa forma, usando o for:
Mas não deu certo, ele apenas retorna o primeiro caracter da sting.


for x in palavra: 
if x != ' ':
sem_espacos = x

print sem_espacos

Fábio Cerqueira

unread,
May 29, 2015, 12:20:25 PM5/29/15
to python...@googlegroups.com
Use o método replace
Fábio Cerqueira

Diego Garcia

unread,
May 29, 2015, 12:21:09 PM5/29/15
to python-brasil
Sei que não deveria dar a resposta, mas está complicando atoa :(

>>> ''.join('subi no ponto'.split(' '))
'subinoponto'

Python é poderoso principalmente graças aos builtins

Jean Pierre Lopes da Silva

unread,
May 29, 2015, 12:48:32 PM5/29/15
to python...@googlegroups.com

Olá.
Da um replace na string substituindo espaço por nulo...

>>> a = 'boa tarde fulano'

>>> a = a.replace(' ','')

>>> a

'boatardefulano'

Victor Augusto Furtado Leite

unread,
May 29, 2015, 12:49:18 PM5/29/15
to python...@googlegroups.com
Ricardo, aqui você quase acertou.

O for vai colocar no x cada caractere da string que está em palavra, da esquerda para a direita até o final da string.

Isso teria funcionado:
sem_espacos = ''
for x in palavra: 
if x != ' ':
sem_espacos += x

print sem_espacos


2015-05-29 13:17 GMT-03:00 Ricardo <ricard...@gmail.com>:



--
Victor Augusto Furtado Leite

Ricardo Milanez Fonseca

unread,
May 29, 2015, 12:56:03 PM5/29/15
to python...@googlegroups.com
Gente, muito obrigado!
As soluções funcionaram muito bem!

Um grande abraço a todos!
Vlw! 

Você recebeu essa mensagem porque está inscrito em um tópico no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-brasil/hQQWXTMWM2g/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.

Marco André Lopes Mendes

unread,
May 29, 2015, 1:00:21 PM5/29/15
to Python Brasil
Depois que você aprende compreensão de listas, sempre dá vontade de usar. Depois de feito desse último jeito postado (que funciona), experimente fazer isso:

sem_espaços = ''.join([x for x in palavra if x != ' '])

Além disso você usa a mesma estrutura pra outras situações:

so_letras = ''.join([x for x in palavra if x.isalpha()])

sem_espacos_e_pontuacao = ''.join([x for x in palavra if x not in ' ;?:.,!'])

e por aí vai...

Um abraço


Marco André

gsm....@uea.edu.br

unread,
Apr 19, 2017, 10:19:54 AM4/19/17
to Python Brasil
"Em sexta-feira, 29 de maio de 2015 13:17:10 UTC-3, Ricardo escreveu:
Tentei fazer dessa forma, usando o for:
Mas não deu certo, ele apenas retorna o primeiro caracter da sting.


for x in palavra: 
if x != ' ':
sem_espacos = x

print sem_espacos
 
"
O correto seria: 
for x in len(palavra): 
if x != " ":
sem_espacos = sem_espacos + x

print sem_espacos

Ai neste caso a variavel sem espacos seria o acumulador
Reply all
Reply to author
Forward
0 new messages