[Rio-pm] Tratamento de dados para CSV

Fernando Oliveira fernandocorrea em gmail.com
Sexta Junho 1 08:32:07 PDT 2012


Assumindo q exita o arquivo: tabela.txt
contendo:

Manoel;Pedro
Joao;Pedro
Pedro;Manoel

GOLF?!
minha 1a tacada:

perl
-lnE'/;/;$l{$'}//=$i++;$c{$`}=[];$c{$`}[$l{$'}]=1}{say";",join(";",sort{$l{$a}<=>$l{$b}}keys%l);say
join";",$_,@{$c{$_}}[0..keys%l]for keys%c' tabela.txt

Just another Perl Hacker,
Fernando (SmokeMachine)


Em 1 de junho de 2012 12:00, Stanislaw Pusep <creaktive em gmail.com> escreveu:

> @breno, infelizmente, se for um "CSV" gerado por algumas ferramentas de
> escritório cujo nome não quero citar nessa lista, expressão regular não
> basta, já dizia o brian d foy:
> http://www.effectiveperlprogramming.com/blog/1386
> @cleysinho, bacana o Class:CSV, pelo que entendi, é uma interface
> "user-friendly" para o Text::CSV que, apesar de funcionar muito bem, é
> bastante prolixo. Um módulo que tentei usar recentemente é o Parse::CSV,
> porém ele, como já diz o nome, apenas lê o CSV (também via Text::CSV).
>
> ABS()
>
>
>
>
> 2012/6/1 breno <breno em rio.pm.org>
>
>> 2012/6/1 Manoel Domingues Junior <manoel.domingues.junior em gmail.com>:
>> > Olá pessoal,
>> >
>> > Estou com um dificuldade em encontrar um módulo no cpan que me ajude a
>> > fazer a geração de uma matriz...
>> >
>> > Eu obtenho os dados de um software no seguinte formato:
>> > Manoel;Pedro
>> > João;Pedro
>> > Pedro;Manoel
>> > ....
>> >
>> > Esses dados eu gostaria de colocar em uma matriz do tipo:
>> > X; Pedro;Manoel;
>> > Manoel; 1;;
>> > João;1;;
>> > Pedro;;1;
>> >
>> > Alguém conhece algum módulo que me permita fazer isso?
>> >
>>
>> Manoel,
>>
>> desculpa a pergunta, mas "isso" o quê? Pode ser pq ainda não acordei
>> direito, mas não entendi o que vc está fazendo...
>>
>> Supondo que vc tem uma lista na forma:
>>
>> my @linhas = (
>>    'Manoel;Pedro',
>>    'João;Pedro',
>>    'Pedro;Manoel',
>> );
>>
>> você pode gerar uma nova lista fazendo algo como:
>>
>> my @nova = ();
>>
>> foreach my $linha (@linhas) {
>>    my @campos = split /\s*;\s*/ => $linha;
>>
>>    # modifique @campos como bem entender...
>>
>>    push @nova, join ';' => @campos;
>> }
>>
>> é isso?
>>
>>
>> []s
>>
>> -b
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120601/0ccf2c32/attachment-0001.html>


Mais detalhes sobre a lista de discussão Rio-pm