Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia!
Estou utilizando python para efetuar a carga de arquivos num banco. E estou com o seguinte problema.
O arquivo [e delimitado por ;.
Entao usei a funcao: dados = csv.reader(open('xxx.txt','r'),delimiter=';')
Mas ocorre que em alguns campos contem o caractere ; no texto... e o python separa o campo em duas colunas... ai bagunca td.
Ja me informaram que as areas que geram os dados nao alteram para incluir um qualificador de texto, que resolveria meu problema.
Alguem j[a teve problema parecido?
Consigo descobrir em qual linha tem mais delimitadores do que o normal, mas como tem mais de um campo que pode ter o caractere ; nao consigo definir qual caractere que devo eliminar.
Desde ja agradeco a atencao.
Att,
Ernesto Teodoro da SIlva
>
Se você sabe que deve haver apenas 3 colunas você pode obter a linha (string) e usar o método count p/ verificar se é uma linha válida ou não.
a = 'coluna1;coluna2;coluna3'
b= 'texto1; texto muito grande com listagem; contendo separador; texto 3'
if b.count(';') != 2:
raise Exception('Linha inválida')
Boa tarde!
Obrigado pela dica.
Mas eu já contei, usando esse método. Me ajudou a marcar quais linhas contém erro.
O dificil agora é tentar corrigir via código.
Tenho que pensar numa lógica boa .....pq descobrindo qual linha tem o erro, tenho que descobrir qual delimitador na verdade está no texto.... mas tem mais de um campo que pode ter isso...
Acho que vou ter que gerar blocos difirentes para cada situação e testando ...
mas acho que isso pode deixar a rotina lenta né......
Isso é serviço pra ser humano.
Se você sabe que deve haver apenas 3 colunas você pode obter a linha (string) e usar o método count p/ verificar se é uma linha válida ou não.
a = 'coluna1;coluna2;coluna3'
b= 'texto1; texto muito grande com listagem; contendo separador; texto 3'
if b.count(';') != 2:
raise Exception('Linha inválida')