A idéia é muito interessante, creio que valeria para endereços que não fossem do Brasil também (com ajustes, claro).<br><br>A dificuldade será em estabelecer o padrão de preenchimento do endereço para um parse bem adequado.
<br><br>Gostei da idéia.<br><br><div><span class="gmail_quote">On 3/20/07, <b class="gmail_sendername">Daniel Ruoso</b> <<a href="mailto:daniel@ruoso.com">daniel@ruoso.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Seg, 2007-03-19 às 11:39 -0300, Veronica Soraia escreveu:<br>> olá tenho um problema , não estou conseguindo resolver (sou iniciante<br>> rsrsr), é o seguinte, tenho um arquivo q vem com o endereço junto com<br>> essas duas opções : AV 29 JUNHO 00602, e , R MARGARIDAS 13 QD8 C 13.
<br><br>Vendo esse problema, me lembrei de uma migração que tive que fazer uma<br>vez de um banco de dados lazarento em access para um banco de dados<br>PostgreSql. Uma das diferenças dos bancos de dados era que o endereço no
<br>banco novo era completamente estruturado (conforme utilizado pelos<br>correios) em Tipo de Logradouro, Logradouro, Número e Complemento,<br>enquanto no banco de dados anterior foi preenchido completamente à mão<br>por um conjunto indefinido de pessoas.
<br><br>O parse não foi perfeito, mas os casos que consegui localizar enquanto<br>estava escrevendo o script foram atendidos... De repente valia a pena<br>fazer um módulo Brasil::Parse::Endereco :)... e fazer test cases...
<br><br>bem... aí vai o código que eu fiz na altura:<br><br><code><br>sub extrair_endereco {<br> my $endereco = shift;<br> my $original = $endereco;<br> my ($t,$l,$n,$c) = ('','','','');
<br><br> if ($endereco =~ /^rua\,*\s*(.+)$/i) {<br> $t = "Rua";<br> $endereco = $1;<br> } elsif ($endereco =~ /^av\.*\,*\s*(.+)$/i) {<br> $t = "Avenida";
<br> $endereco = $1;<br> } elsif ($endereco =~ /^trav\.*\,*\s*(.+)$/i) {<br> $t = "Travessa";<br> $endereco = $1;<br> }<br><br> if ($endereco =~ /^([^,]+)\s*,\s*(.+)$/i) {
<br> $l = $1;<br> $endereco = $2;<br> } elsif ($endereco =~ /^(.+)\s*N\.*º\s*(.+)$/i) {<br> $l = $1;<br> $endereco = $2;<br> } elsif ($endereco =~ /^(.\D+)\s+(\d+?.+)$/i) {
<br> $l = $1;<br> $endereco = $2;<br> }<br><br> if ($endereco =~ /^(\S+)\s+(.+)$/) {<br> $n = $1;<br> $c = $2;<br> } else {<br> $n = $endereco;
<br> $c = '';<br> }<br><br> return ($t,$l,$n,$c);<br>}<br></code><br><br>Alguém acha a idéia interessante?<br><br>daniel<br><br>_______________________________________________<br>
Cascavel-pm mailing list<br><a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></blockquote></div>
<br><br clear="all"><br>-- <br>Gabriel Vieira