[Resolvido] Sugestão de como extrair informações de um arquivo TXT

6 respostas
F

Bom dia!
Não tenho muita experiencia com manipulação de arquivos, então gostaria de sugestões que pudessem me auxiliar a com meu problema.

Tenho um arquivo TXT com algumas informações, cada linha corresponde a um registro, os dados são separados por espaços mas não há uma padronização nesse sentido, um exemplo de dado seria essa linha:

1      Arroz, integral, cozido                    70,1     124           517

Vejam que os dados estão separados por espaços mas podem haver de 1 a N espaços separando as colunas.

Estou com dificuldade para ler esses dados, tentei o classico String.split() mas existem espaços na descrição tmb, isso precisaria ser tratado, pensei em utilizar regex, mas como tmb não manjo muito ainda estou apanhando para construir as expressões de forma correta.

Alguém me sugere algo?

Obrigado!

6 Respostas

V

Tem certeza que são só espaços? Não tem tabs no meio (\t)?

Você pode usar o split para quebrar onde existam no mínimo 3 espaços em sequência. É só montar a expressão regular para isso.

B

Se você não encontrar um padrão no arquivo realmente não tem como fazer mágica para lê-lo…

Parece que o arquivo esta sendo separado por tabs, tente fazer um split no “\t” e veja se consegue pegar os dados.

Se não funcionar você terá que fazer gambis…

  • Transoformar todos os espaços em 1 espaço simples apenas (uma recursão com replace resolve isso, porém é absurdamente custosa)
  • Fazer split em todos os espaços, salvo aqueles que sejam precedidos por uma ‘,’.
R

Se esse arquivo tem um padrão de layout, vc pode experimentar a biblioteca JFileHelpers para ler o arquivo ou até mesmo salvar informações nele.

http://jfilehelpers.com/index_pt.php

V

Isso também cheira a um arquivo com colunas fixas, não?
Repare se cada campo não está numa posição específica da linha.

F

As colunas estão sempre na mesma ordem, mas elas não tem posição fixa, para que eu possa ler me baseando em índices, era essa a idéia, não era?

Veja o exemplo:

31      Farinha, de milho, amarela                               11,8     351           1467
32      Farinha, de rosca                             9,8      371          1550

Gostei da idéia do split por mais de 1 espaço, vou testá-la.

F

Boa tarde!

Pessoal, deu certo realizar o split a cada 3 espaços por linha, pensei que seria muito demorado mas não foi, 200ms para 450 linhas.

O arquivo tende a crescer, mas creio que não terei grandes problemas com importações.

Obrigado!

Criado 24 de agosto de 2010
Ultima resposta 24 de ago. de 2010
Respostas 6
Participantes 4