Ir para o conteúdo
Polmax

Indice por linha

Mensagens Recomendadas

Polmax    0
Polmax

é possivel trabalhar com indices por linha ?

em ves de ser assim

asdasdf    asfasfasf    asfasfasf    asdgasdg

  1                2                3                4

ser assim

asdasd    1

asdasdas    2

asdfas    3

asdasf  4

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Polmax    0
Polmax

se eu tiver um ficheiro de texto  com algo assim

asdfdsf    sadgfsadgads    sadgasdg    asdgasdgasd    sadgasdgasdg

e em haskell tiver um tipo de dados com 5 campos e lhe disser pra passar o que esta no indice 1 para o campo 1 , indice 2 para o campo 2 etc

ele vai me passar

asdfdsf    sadgfsadgads    sadgasdg    asdgasdgasd    sadgasdgasdg

campo1    campo2              campo3          campo4        campo5

certo?

agora eu queria saber , e se no ficheiro de texto eu tiver algo do genero

asdfdsf   

sadgfsadgads 

sadgasdg 

asdgasdgasd

sadgasdgasdg

ha alguma maneira de fazer o mesmo que faço quando estao na mesma linha ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Polmax    0
Polmax

melhor mostrar tudo .

Antes eu tinha algo assim

-rw-rw-rw-  1 Utilizador 0      74 2012-01-10 12:27 aa.hs

drw-rw-rw-  2 Utilizador 0      0 2011-12-26 21:29 Apoio

-rw-rw-rw-  1 Utilizador 0      0 2012-01-10 12:55 dat.hs

-rw-rw-rw-  1 Utilizador 0  51518 2012-01-10 12:54 data.txt

-rw-rw-rw-  1 Utilizador 0  11043 2012-01-12 17:06 dataTexto.txt

-rw-rw-rw-  1 Utilizador 0    2014 2011-12-02 20:51 Dir.lhs

e era facil separar o texto por indices e passalos para os campos do data que tinha criado

agora digamos que tenho algo assim

-rw-rw-rw-

1

Utilizador

0   

0

2012-01-10

12:55

dat.hs

e queria passar cada linha para um campo .

outra opção era usar o text.regex e ter tudo numa linha mas ia ter algo do genero

-rw-rw-rw-  1 Utilizador 0      0 2012-01-10 12:55 dat.hs -rw-rw-rw-  1 Utilizador 0  51518 2012-01-10 12:54 data.txt

e aqui não sei como dizer ao haskell , olha o data que eu criei tem 8 campos , pegas o que tens no indice 1 e passas pro campo 1 ... e quando chegares ao índice 9 que seria outro "-rw-rw-rw-" passas isso pro campo 1 outra vez e continuas...

não sei se me estou a fazer entender :S

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Betovsky    2
Betovsky

Presumindo que já tens uma String que é o texto todo. E que queres agrupar de 4 em 4 linhas para um determinado tipo. Como não sei que tipo é, vou usar como exemplo um tuplo, cujo o 2º elemento seja um int.

getValuesFromText :: String -> [(String, Int, String, String)]
getValuesFromText txt = linesToValues $ lines txt

linesToValues :: [string] -> [(String, Int, String, String)]
linesToValues (s1:s2:s3:s4:ss) = (s1, read s2, s3, s4) : linesToValues ss
linesToValues _ = []

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Polmax    0
Polmax

txt = readFile "txt1.txt"
getValuesFromText :: String -> [(String, Int, String, String)]
getValuesFromText txt = linesToValues $ lines txt

linesToValues :: [string] -> [(String, Int, String, String)]
linesToValues (s1:s2:s3:s4:ss) = (s1, read s2, s3, s4) : linesToValues ss
linesToValues _ = []

a funçao getValuesFromText dame erro

o txt1.txt

tem o texto

8BP01000.MP3

2.3 MB

MPG/3

hadoken

nullsleep

2001

8BP01001.MP3

1782 kB

MPG/3

8x8 knights

nullsleep

2001

8BP01002.MP3

1572 kB

MPG/3

frisbee friendz

nullsleep

2001

8BP01003.MP3

.

.

.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Polmax    0
Polmax

Ok getValuesFromText tem que receber uma string como argumento e eu estava a passar uma IO String o que não da jeito.

Mas sinceramente nao estou a perceber a tua função :/

aqui

getValuesFromText txt = linesToValues $ lines txt

a função recebe uma string , vai parti la em uma lista de strings sempre que encontrar uma nova linha certo ?

isso é o que faz lines txt

a parte do lines to values não percebi desculpa :/

alias ja percebi agora , vai pegar nessa lista de strings e por os 4 primeiros elementos à cabeça.

o    _=[]    pra que é ?

Ok distracção minha desculpa .

ja percebi tudo (_=[])<---- era pra isso mesmo não ? pra ver se eu estava distraído :O

Agora outra duvida , digamos que eu queira que haja sempre 4 campos mas no meu ficheiro txt numa parte a informação tenha 3 campos, é impossível lidar com isto não ?

Por exemplo o primeiro bloco vai ser de nomes e o segundo nao interessa .

Joao

Da

Silva

Costa

ASA

ASD

ASDF

ASFG

se eu tivesse em ves disso

Joao

Da

Silva

ASA

ASD

ASDF

ASFG

era impossivel dizer ao haskell que no ultimo campo tinha que escrever uma string vazia certo ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Betovsky    2
Betovsky

Sim, não só no Haskell, como em qualquer linguagem de programação.

Isso não é problema da linguagem, mas sim um problema de input de dados. Se tens uma quantidade de dados de tamanho variável, é preciso estar definido como detectar o inicio e o fim dos dados.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Polmax    0
Polmax

Grande ideia que me deste agora :(

O primeiro campo , ou seja File Name tem sempre a extensão no fim

8BP01000.MP3

2.3 MB

MPG/3

hadoken

nullsleep

2001

8BP01001.MP3

1782 kB

MPG/3

8x8 knights

nullsleep

2001

8BP01002.MP3

1572 kB

MPG/3

frisbee friendz

nullsleep

2001

Vou tentar com o text regex criar regex para .mp3 .avi e outros tipos que tenha,quando detectar .mp3 por exemplo eu já sei que é audio e so passo esses dados para o data Som , quando for outro qualquer passo para Video (Tenho a vantagem de estar a trabalhar so com estes dois e tem sempre a extensão no nome).

Se por acaso não detectar um campo deixo em branco .

Acho que da para fazer isso nao ?

Ou será melhor abordar isto de outra forma?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade