Pular linha

3,448 views
Skip to first unread message

Pedro Chagas junior

unread,
Feb 25, 2013, 2:41:47 PM2/25/13
to python...@googlegroups.com
Pessoal, mais uma dúvida de iniciante.

Tenho um arquivo texto e minhas informações estão em cada 2 duas linhas, a pergunta q vale 1 milhão (pelo menos para mim...rss) como faço para ler a segunda linha.
Procurei mto, mas não consegui nada q funcione!!

tks!!

Christian S. Perone

unread,
Feb 25, 2013, 2:47:47 PM2/25/13
to python...@googlegroups.com
Se eu entendi correto, você tem:

XXX
INFORMAÇÂO
XXX
INFORMAÇÃO
XXX
(etc..)

Você pode colocar dentro do for:

if (num_linha+1)%2==0: continue


2013/2/25 Pedro Chagas junior <pedroc...@gmail.com>
--
--
------------------------------------
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ê está recebendo esta mensagem porque se inscreveu no grupo "python-brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
"Forgive, O Lord, my little jokes on Thee, and I'll forgive Thy great big joke on me."

Renne Rocha

unread,
Feb 25, 2013, 2:51:32 PM2/25/13
to python...@googlegroups.com
Como você está fazendo para ler as linhas do arquivo?

Você pode "caminhar" pelas linhas do arquivo usando o readline (http://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects)

Você abre o arquivo e vai lendo ele linha a linha:

>>> f.readline()
'This is the first line of the file.\n'
>>> f.readline()
'Second line of the file\n'
>>> f.readline()
Ou você pode usar o readlines() e criar uma lista com todas as linhas do arquivo:
>>> f.readlines()
['This is the first line of the file.\n', 'Second line of the file\n']
Aí você pode pegar as linhas que você precisa.

Era isso que você está perguntando mesmo?



2013/2/25 Pedro Chagas junior <pedroc...@gmail.com>
Pessoal, mais uma dúvida de iniciante.
--

Pedro Chagas junior

unread,
Feb 25, 2013, 3:08:42 PM2/25/13
to python...@googlegroups.com
pessoal, segue meu código:

for diretorio in os.listdir("/home/pedro/Documentos/Fixo"):
    print (diretorio)
    arquivo = open(diretorio,'r')
    texto = arquivo.readlines()
    for linha in texto:
        print(linha) 
        tipo = linha[0:2]
        print (tipo)    
        if tipo == "|1" or tipo =="|2" or tipo =="|3" or tipo =="|4" or tipo =="|5" or tipo =="|6" or tipo =="|7" or tipo =="|8" or tipo =="|9" or tipo =="|F" or tipo =="|#1" :
            var1 = linha[1:9]
            var2 = linha[10:26]
            var3 = linha[42:44] +'/'+linha[40:42]+'/'+linha[38:40]            
            hor4 = linha[44:46]+':'+linha[46:48] 
            var5 = linha[50:58]
            ******aqui preciso pular para a linha seguinte
            var6 = linha[59:61]
            var7 = linha[159:168]
    
    arquivo.close()
    db.close()
--
Pedro Chagas Junior

Renne Rocha

unread,
Feb 25, 2013, 3:14:55 PM2/25/13
to python...@googlegroups.com
Não parece muito legal :-) Acho que dá pra ficar mais simples. Como é o formato das linhas desse arquivo? Pode colocar um exemplo?

A presença de | e você estar usando substrings para pegar os campos me sugere que sua linha típica seria algo assim:

1|var1|var2|var3

Ao invés de ficar pegando pedaços, você poderia usar um split na linha:

campos = linha.split('|')

Aí campos seria uma lista:
campos = ['1', 'var1', 'var2', 'var3', ]

Mais fácil de trabalhar...

Daniel de Oliveira Mantovani

unread,
Feb 25, 2013, 3:18:57 PM2/25/13
to python...@googlegroups.com
Use a ferramenta certa para a tarefa certa,

$perl -nE 'print if $.%2==0' < arquivo.txt

2013/2/25 Pedro Chagas junior <pedroc...@gmail.com>:
> --
> --
> ------------------------------------
> 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ê está recebendo esta mensagem porque se inscreveu no grupo
> "python-brasil" dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para python-brasi...@googlegroups.com.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>



--

-dom

--

IBM - Business Analytics Optimization Consultant
Daniel Mantovani +5511 8538-9897
XOXO

Pedro Chagas junior

unread,
Feb 25, 2013, 3:23:12 PM2/25/13
to python...@googlegroups.com
meu arquivo texto:

|###20   |                |          |1211061127|000:00:34|     0.00|V       |0|
|        |###100              |N|            |   0|000020|000020|1299|  303|B|H|

Daniel de Oliveira Mantovani

unread,
Feb 25, 2013, 3:24:21 PM2/25/13
to python...@googlegroups.com
Pedro, coloque num paste web service. O arquivo está sendo quebrado
dentro do e-mail.
http://paste.scsys.co.uk/

2013/2/25 Pedro Chagas junior <pedroc...@gmail.com>:

Pedro Chagas junior

unread,
Feb 26, 2013, 12:08:21 PM2/26/13
to python...@googlegroups.com
Pessoal mais alguma sugestão, tentei fazer conforme o Renne disse, mas não funcionou...

Renne Rocha

unread,
Feb 26, 2013, 12:09:20 PM2/26/13
to python...@googlegroups.com
Mostre como você tentou fazer e talvez possamos descobrir onde você errou ou porque a minha sugestão não resolve este problema.


2013/2/26 Pedro Chagas junior <pedroc...@gmail.com>

Pedro Chagas junior

unread,
Feb 26, 2013, 12:18:46 PM2/26/13
to python...@googlegroups.com
Renne, 

Estou tentando colocar um linha.readline() para mudar de linha mas da erro.


tks


Você recebeu esta mensagem porque está inscrito em um tópico do grupo "python-brasil" dos Grupos do Google.
Para cancelar a inscrição neste tópico, acesse https://groups.google.com/d/topic/python-brasil/bGbHEYQWEhA/unsubscribe?hl=pt-BR.
Para cancelar a inscrição neste grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.

Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Pedro Chagas Junior

Renne Rocha

unread,
Feb 26, 2013, 12:20:15 PM2/26/13
to python...@googlegroups.com
Pedro,

Sem mostrar o código todo... fica praticamente impossível ajudar....

Pedro Chagas junior

unread,
Feb 26, 2013, 12:25:53 PM2/26/13
to python...@googlegroups.com
Desculpa, é pq tem o código em umas das respostas.. mas segue novamente

Tks!!


for diretorio in os.listdir("/home/pedro/Documentos/Fixo"):
    print (diretorio)
    arquivo = open(diretorio,'r')
    texto = arquivo.readlines()
    for linha in texto:
        print(linha) 
        tipo = linha[0:2]
        print (tipo)    
        if tipo == "|1" or tipo =="|2" or tipo =="|3" or tipo =="|4" or tipo =="|5" or tipo =="|6" or tipo =="|7" or tipo =="|8" or tipo =="|9" or tipo =="|F" or tipo =="|#1" :
            var1 = linha[1:9]
            var2 = linha[10:26]
            var3 = linha[42:44] +'/'+linha[40:42]+'/'+linha[38:40]            
            hor4 = linha[44:46]+':'+linha[46:48] 
            var5 = linha[50:58]
            ******aqui preciso pular para a linha seguinte
            var6 = linha[59:61]
            var7 = linha[159:168]
    
    arquivo.close()
    db.close()

Flávio Casacurta

unread,
Feb 26, 2013, 12:42:10 PM2/26/13
to python...@googlegroups.com
De uma olhada em http://turing.com.br/pydoc/2.7/tutorial/classes.html#iteradores, tutorial gentilmente traduzido por Luciano Ramalho.

""" Nos bastidores, o comando for aplica a função embutida iter() à coleção. Essa função devolve um iterador que define o método next(), que acessa os elementos da coleção em sequência, um por vez. Quando acabam os elementos, next() levanta uma exceção StopIteration, indicando que o laço for deve encerrar."""

Você pode 'iterar' o iterador

Após:
>>> texto = arquivo.readlines()
inclua:
>>> iTexto = iter(texto)
>>> iTexto
    <listiterator at 0x36b0210>
Faça o 'for' encima do iterador
>>>  for linha in iTexto:
Quando hover necessidade de "pular de linha" use:
...      iTexto.next()

Lembre-se que o uso explícito do "next()" não está sendo controlado pelo 'for' e pode levantar uma exceção StopIteration então:
...      try:
...         iTexto.next()
...      except StopIteration:
...         break

Para aprender mais sobre iteradores e geradores faça o curso de objetos pythônicos do Luciano Ramalho

Espero ter ajudado,

Flávio                   

Flávio Casacurta

unread,
Feb 26, 2013, 1:00:45 PM2/26/13
to python...@googlegroups.com
Desculpe

...      try:
...         linha = iTexto.next()
...      except StopIteration:
...         break

Flávio

Pedro Chagas junior

unread,
Feb 26, 2013, 1:23:40 PM2/26/13
to python...@googlegroups.com
Flavio,

Funcionou..... muito obrigado!!!!


--
--
------------------------------------
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ê está recebendo esta mensagem porque se inscreveu no grupo "python-brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Pedro Chagas Junior
Reply all
Reply to author
Forward
0 new messages