[python-brasil] Remover LInhas TXT

2,829 views
Skip to first unread message

James Tiago

unread,
Mar 19, 2010, 8:09:26 AM3/19/10
to python...@yahoogrupos.com.br
 

Ola pessoal,

O usuário informa Nome = raw_input("Nome: ")

Como faço para percorrer todo arquivo.txt e remover todas as linhas que encontrar (Nome)?

Abs[]/

__________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

Luciano Ramalho

unread,
Mar 19, 2010, 10:10:24 AM3/19/10
to python...@yahoogrupos.com.br

2010/3/19 James Tiago <jamesguindani@yahoo.com.br>:
> O usuário informa Nome = raw_input("Nome: ")

Dica 1: a convenção em Python é usar iniciais maiúsculas apenas no
nome de classes. No caso fica melhor assim:

nome = raw_input("Nome: ")



> Como faço para percorrer todo arquivo.txt e remover todas as linhas que encontrar (Nome)?

Dica 2: se vocẽ quer mesmo usar a linguagem Python, vale muito a pena
dedicar algumas horas para ler o tutorial oficial de Python, em
português:

http://www.python.org.br/wiki/TutorialPython

Porque é muito fácil fazer esse tipo de coisa em Python.

Vejamos uma possível solução. Por "remover todas as linhas" eu vou
entender que você quer gerar uma saída onde as linhas com o nome não
apareçam. Fica assim:

########################################
entrada = raw_input("Entrada: ")
nome = raw_input("Nome: ")

for linha in open(entrada):
if nome not in linha:
print linha
########################################

Agora, o ideal é você ler os argumentos (nome do arquivo, nome a
remover) da linha de comando, em vez de usar raw_input, pois fica mais
fácil integrar o script com outras coisas. Para isso vocẽ usaria o
módulo sys, variável sys.arg (leia na documentação)

Finalmente, vale notar que quem usa Linux ou MacOSX ou qualquer Unix
jamais faria um programa assim, porque ele já vem pronto: chama-se
grep.

Veja só:

$ grep -v nome_a_remover arq_entrada > arq_saida

Pronto!

[ ]s
Luciano

PS. Leia o tutorial de Python. Vale a pena!

--
"""
O burocrata consegue transformar qualquer solução em um problema.
"""

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

Luciano Ramalho

unread,
Mar 19, 2010, 10:13:53 AM3/19/10
to python...@yahoogrupos.com.br

2010/3/19 Luciano Ramalho <ramalho@gmail.com>:
> Agora, o ideal é você ler os argumentos (nome do arquivo, nome a
> remover) da linha de comando, em vez de usar raw_input, pois fica mais
> fácil integrar o script com outras coisas. Para isso vocẽ usaria o
> módulo sys, variável sys.arg (leia na documentação)

Oops, o nome correto da variável é sys.argv.



--
"""
O burocrata consegue transformar qualquer solução em um problema.
"""

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

pdropi

unread,
Mar 19, 2010, 10:02:42 AM3/19/10
to python...@yahoogrupos.com.br
 

Fala,
não entendi muito bem o que deve ser feito mas...
se quiser percorrer um txt e remover uma linha inteira que contém uma palavra "nome:", faça assim:

abra o arquivo (open)
leia-o utilizando readlines, para poder ler linha por linha e nao letra por letra e armazene em uma variável ex:

linhas=arquivo.readlines()

agora examine linha por linha e apague a que tiver a palavra "nome"

for linha in linhas: #para examinar linha a linha
palavrasdalinha = line.split(" ")

for palavra in palavrasdalinha:

if palavra=="nome:":
linha=""
break

espero q seja isso
Até mais

--- Em python-brasil@yahoogrupos.com.br, James Tiago <jamesguindani@...> escreveu


>
> Ola pessoal,
>
> O usuário informa Nome = raw_input("Nome: ")
>
> Como faço para percorrer todo arquivo.txt e remover todas as linhas que encontrar (Nome)?
>
> Abs[]/
>
>
> __________________________________________________________
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

pedro almeida

unread,
Mar 19, 2010, 10:33:41 AM3/19/10
to python...@yahoogrupos.com.br
 

1

--- Em sex, 19/3/10, Luciano Ramalho <ramalho@gmail.com> escreveu:

De: Luciano Ramalho <ramalho@gmail.com>
Assunto: Re: [python-brasil] Remover LInhas TXT
Para: python-brasil@yahoogrupos.com.br
Data: Sexta-feira, 19 de Março de 2010, 23:13

 

2010/3/19 Luciano Ramalho <ramalho@gmail. com>:



> Agora, o ideal é você ler os argumentos (nome do arquivo, nome a

> remover) da linha de comando, em vez de usar raw_input, pois fica mais

> fácil integrar o script com outras coisas. Para isso vocẽ usaria o

> módulo sys, variável sys.arg (leia na documentação)

Oops, o nome correto da variável é sys.argv.

--

"""

O burocrata consegue transformar qualquer solução em um problema.

"""

__________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

James Tiago

unread,
Mar 23, 2010, 4:15:23 PM3/23/10
to python...@yahoogrupos.com.br
 

Ola Pedro, obrigado a todos que responderam, todas respostas foram uteis..

Mas me chamou a atenção do "sys.argv", do que usar "raw_input", então do mesmo jeito eu chamo no console: python script.py ?

Obrigado.

________________________________
De: pedro almeida <pdropi@yahoo.com.br>
Para: python-brasil@yahoogrupos.com.br
Enviadas: Sexta-feira, 19 de Março de 2010 11:33:41

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

Luciano Ramalho

unread,
Mar 23, 2010, 5:30:39 PM3/23/10
to python...@yahoogrupos.com.br

2010/3/23 James Tiago <jamesguindani@yahoo.com.br>:
> Ola Pedro, obrigado a todos que responderam, todas respostas foram uteis..
>
> Mas me chamou a atenção do "sys.argv", do que usar "raw_input", então do mesmo jeito eu chamo no console: python script.py ?

Você pode chamar assim:

$ python script.py arquivo_entrada > arquivo_saida

E neste caso dentro do seu programa você gera a saída fazendo print,
apenas. Simplifica bastante, e fica fácil de combinar com outros
comandos do shell.

Se você colocar na primeira linha do script este texto:

#!/usr/bin/env python

pode então torná-lo um executável com o comando:

$ chmod +x script.py

e aí para rodar fica ainda mais simples:

$ ./script.py arquivo_entrada > arquivo_saida

[ ]s
Luciano



--
"""
O burocrata consegue transformar qualquer solução em um problema.
"""

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___
Reply all
Reply to author
Forward
0 new messages