sou iniciante na linguagem python e quero fazer algumas operações com
um arquivo .txt (esse tem várias linhas e colunas), como por exemplo:
- somar todos os valores de uma coluna;
- multiplicar valores de uma coluna com as da outra;
- ....
Outra coisa a separação entre valores de uma coluna e outra pode ser
";" ou necessariamente tem que ser espaço?
Eu já li o tutorial e não achei nada relacionado a isso.
Acredito que seja algo bem simples em python, mas eu não estou
conseguindo fazer hahahah
se alguém puder me ajudar eu agradeço.
Obrigada
Att
Anna Paula
------------------------------------
,-----------------------------------------------------------.
| 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. |
`-----------------------------------------------------------´Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
mas se você estiver gravando uma planilha, que, por exemplo, tenha uma
coluna de texto que pode ter vírgula dentro, aí é melhor usar o módulo
csv da biblioteca padrão. É mais enrolado, mas funcionará até se tiver
uma quebra de linha no meio do texto de uma coluna.
abs
2010/3/23 Anna Paula Fagundes <ap.fa...@gmail.com>:
> Olá pessoal,
>
> sou iniciante na linguagem python e quero fazer algumas operações com
> um arquivo .txt (esse tem várias linhas e colunas), como por exemplo:
>
> - somar todos os valores de uma coluna;
> - multiplicar valores de uma coluna com as da outra;
> - ....
>
> Outra coisa a separação entre valores de uma coluna e outra pode ser
> ";" ou necessariamente tem que ser espaço?
>
> Eu já li o tutorial e não achei nada relacionado a isso.
>
> Acredito que seja algo bem simples em python, mas eu não estou
> conseguindo fazer hahahah
>
> se alguém puder me ajudar eu agradeço.
>
> Obrigada
>
> Att
>
> Anna Paula
>
--
Paulo Eduardo Neves
http://www.mosquito.pro.br
colunas=linha.split(';')
agora, para somar valores das colunas, poderá fazer de várias formas.
uma forma é, por exemplo:
se quiser somar os valores (números) da primeira coluna:
coluna1=0 #começa com o valor "zero"
for linha in arquivo:
coluna=linha.split(';')
coluna1+=coluna[0] #posição zero é a primeira
se não for número, vai concatenar se deixar como string
espero ter ajudado
até mais
--- Em python...@yahoogrupos.com.br, Paulo Eduardo Neves <pauloneves@...> escreveu
>
> Basicamente o que você tem que fazer é separar cada linha nas colunas.
> Como será feito, vai depender dos dados que você estará tratando. Ser
> forem simples colunas separadas por espaços, basta fazer:
> cols = linha.split()
> separado por vírgula?
> cols = linha.split(',')
>
> mas se você estiver gravando uma planilha, que, por exemplo, tenha uma
> coluna de texto que pode ter vírgula dentro, aí é melhor usar o módulo
> csv da biblioteca padrão. É mais enrolado, mas funcionará até se tiver
> uma quebra de linha no meio do texto de uma coluna.
>
> abs
>
> 2010/3/23 Anna Paula Fagundes <ap.fagundes@...>:
consegui fazer o que vocês me indicaram porém quando executo o script, as
informações do arquivo .txt são consideradas como string, ou seja, quando eu
peço para somar uma coluna com a outra, ele concatena e não soma.
Não entendi porque acontece isso, pois sei que em python não precisa
declarar a função, uma vez que os números são float e se apresentam com
algumas casas decimais.
Alguma idéia de como resolver?
Obrigada
Att
Anna Paula
2010/3/24 pdropi <pdr...@yahoo.com.br>
>
>
> É basicamente o que o Paulo Neves disse.
> só para completar:
> se quiser, pode sim utilizar ";" para separar as colunas.
> quando quiser separar, use:
>
> colunas=linha.split(';')
>
> agora, para somar valores das colunas, poderá fazer de várias formas.
> uma forma é, por exemplo:
> se quiser somar os valores (números) da primeira coluna:
>
> coluna1=0 #começa com o valor "zero"
> for linha in arquivo:
> coluna=linha.split(';')
> coluna1+=coluna[0] #posição zero é a primeira
>
> se não for número, vai concatenar se deixar como string
>
> espero ter ajudado
> até mais
>
> --- Em python...@yahoogrupos.com.br<python-brasil%40yahoogrupos.com.br>,
[As partes desta mensagem que não continham texto foram removidas]
Python, graças a Guido, não faz jamais conversão automática de strings
para números ou vice-versa (este é um dos maiores erros que os
criadores de JavaScript e PHP cometeram).
> Alguma idéia de como resolver?
Pegue cada valor e passe pela função float(x).
[ ]s
Luciano
--
"""
O burocrata consegue transformar qualquer solução em um problema.
obrigada pelo esclarecimento, mas em se tratando de colunas com milhares de
números fica inviável fazer essa conversão número a número.
Não existe uma função que possa selecionar a coluna toda e fazer a conversão
dos números que estão nas linhas?
Obrigada
Att
Anna Paula
2010/3/24 Luciano Ramalho <ram...@gmail.com>
>
>
> 2010/3/24 Anna Paula Fagundes <ap.fa...@gmail.com<ap.fagundes%40gmail.com>
> >:
>
> > Não entendi porque acontece isso, pois sei que em python não precisa
> > declarar a função, uma vez que os números são float e se apresentam com
> > algumas casas decimais.
>
> Python, graças a Guido, não faz jamais conversão automática de strings
> para números ou vice-versa (este é um dos maiores erros que os
> criadores de JavaScript e PHP cometeram).
>
>
> > Alguma idéia de como resolver?
>
> Pegue cada valor e passe pela função float(x).
>
> [ ]s
> Luciano
>
> --
> """
> O burocrata consegue transformar qualquer solução em um problema.
> """
>
>
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
Não é inviável. E além de ser viável, é o único jeito.
> Não existe uma função que possa selecionar a coluna toda e fazer a conversão
> dos números que estão nas linhas?
Não.
[ ]s
Luciano
--
"""
O burocrata consegue transformar qualquer solução em um problema.
"""
Olá,
Supondo que todas as colunas são número reais, pode-se ter uma
matriz de números reais com:
linhas_sem_barra_n = open('arquivo.txt').read().split('\n')[:-1]
matriz_s = [x.split(',') for x in linhas_sem_barra_n]
matriz_f = [[float(y) for y in x.split(',')] for x in linhas]
ou
linhas_com_barra_n = open('arquivo.txt').readlines()
matriz_s = [x[:-1].split(',') for x in linhas_com_barra_n]
matriz_f = [[float(y) for y in x[:-1].split(',')] for x in linhas]
Onde "open('arquivo.txt').read().split('\n')[:-1]", abre o
arquivo, lê o conteúdo, cria um vetor com as linha, ignora a última por
ser em branco. "open('arquivo.txt').readlines()", abre o arquivo e lê
linha a linha retornando-as na forma de vetor com '\n' no final, aí tem
que tirar esse '\n' quando for montar a matriz. Na segunda expressão,
para cada linha, separa as colunas separadas por ',', mas esta fica
sendo uma matriz de strings. Na terceira linha transforma em número real
cada valor, isto é, em cada linha em linhas, para cada coluna em linha,
converte em número real. Sinteticamente:
matriz_f = [[float(y) for y in x.split(',')] for x in
open('arquivo.txt').read().split('\n')[:-1]]
matriz_s = [x.split(',') for x in
open('arquivo.txt').read().split('\n')[:-1]]
ou
matriz_s = [x[:-1].split(',') for x in open('arquivo.txt').readlines()]
matriz_f = [[float(y) for y in x[:-1].split(',')] for x in
open('arquivo.txt').readlines()]
Para somar uma coluna partindo da matriz_f:
soma = sum(zip(*matriz_f)[coluna])
Se for partindo da matriz_s:
soma = sum([float(y) for y in zip(*matriz_f)[coluna]])
Agora veja qual processo atende melhor visto que tem milhares de
linhas.
[]'s
Junior Polegato
> Oi luciano,
>
> obrigada pelo esclarecimento, mas em se tratando de colunas com milhares de
> números fica inviável fazer essa conversão número a número.
>
> Não existe uma função que possa selecionar a coluna toda e fazer a
> conversão
> dos números que estão nas linhas?
>
Existem formas simples e compactas de fazer esse tipo de coisa em Python. A
linguagem é MUITO flexível.
1) Você pode converter um a um na leitura (o que dá praticamente na mesma do
que o a linguagem fazer isso automaticamente, afinal, vc só está fazendo o
que o próprio interpretador do PHP ou do Javascript faz).
2) Você pode fazer uma passagem pelos dados dentro de uma lista usando uma
'list comprehension'. Fica elegante e compacto.
3) E finalmente, você pode sobrecarregar um operador (soma) para somar
strings como números, convertendo automaticamente. Não que isso seja
recomendado (neste caso não acho que seria) - apenas estou comentando para
você saber que tem como fazer.
--
Carlos Ribeiro
Consultoria em Projetos
twitter: http://twitter.com/carribeiro
blog: http://rascunhosrotos.blogspot.com
mail: carri...@gmail.com
consegui fazer da forma que eu estava querendo...
f=open('/teste.txt')
>>> for line in f:
... col=line.split(';')
... x=float(col[1])
... y=float(col[2])
... soma=x+y
... print soma
desta forma consegui somar os valores das colunas.
A grande questão estava nos meus números, onde os separadores decimais eram
',' e não '.'
de que qualquer forma obrigada pela atenção.
Att
Anna Paula
2010/3/25 Luciano Ramalho <ram...@gmail.com>
>
>
> 2010/3/25 Anna Paula Fagundes <ap.fa...@gmail.com<ap.fagundes%40gmail.com>
> >:
>
> > obrigada pelo esclarecimento, mas em se tratando de colunas com milhares
> de
> > números fica inviável fazer essa conversão número a número.
>
> Não é inviável. E além de ser viável, é o único jeito.
>
>
> > Não existe uma função que possa selecionar a coluna toda e fazer a
> conversão
> > dos números que estão nas linhas?
>
> Não.
>
>
> [ ]s
> Luciano
>
> --
> """
> O burocrata consegue transformar qualquer solução em um problema.
> """
>
>
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
Eu trabalho com processamento de informações, geralment oriundas de excel.
Eu exporto em CSV. O Separador de Valores padrão do Excel é ";"
O que eu faço é utilizar o módulo CSV do python, já embutido na
distribuição padrão (https://mail.google.com/mail/?shva=1&labs=0) e
separo as colunas em vetores.
Para trocar por valores é só da rum float ou int (valor).
Funciona bem e é bem simples.
Espero te ajudado.
2010/3/25 Anna Paula Fagundes <ap.fa...@gmail.com>:
> Oi Luciano,
>
--
Vinícius Franco do Nascimento
"Doing easily what others find difficult is talent; doing what is
impossible for talent is genius." -- Henri-Frederic Amiel
Att
Anna Paula
2010/3/27 Vinicius Franco do Nascimento <vinicius....@gmail.com>
>
>
> Ana Paula,
>
> Eu trabalho com processamento de informações, geralment oriundas de excel.
> Eu exporto em CSV. O Separador de Valores padrão do Excel é ";"
> O que eu faço é utilizar o módulo CSV do python, já embutido na
> distribuição padrão (https://mail.google.com/mail/?shva=1&labs=0) e
> separo as colunas em vetores.
> Para trocar por valores é só da rum float ou int (valor).
> Funciona bem e é bem simples.
>
> Espero te ajudado.
>
>
> 2010/3/25 Anna Paula Fagundes <ap.fa...@gmail.com<ap.fagundes%40gmail.com>
> >:
> > Oi Luciano,
> >
>
> --
> Vinícius Franco do Nascimento
>
> "Doing easily what others find difficult is talent; doing what is
> impossible for talent is genius." -- Henri-Frederic Amiel
>
>
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
--
--
------------------------------------
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.
--
--
------------------------------------
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.