26 de outubro de 2008

Exemplo 2 - Usando string.split()

string_split.py - Separa uma string (registro de dados) em pedaços (campos), usando um delimitador.

Aí vai um exemplo prático, para quem lida com importação de dados estilo arquivo csv, com campos separados por um delimitador.

""" Separa um registro delimitado, em campos. """

print __doc__
reg = 'Fabiana Lemos;Rua das Acácias, 780;' +\
'Centro;Belo Horizonte;MG;(31) 3234-7890;07/12/1978'

nome, endereco, bairro, cidade, uf, fone, nasc = reg.split(';')
print "%s \n%s \n%s \n%s \n%s \n%s \n%s" % \
(nome,endereco,bairro,cidade,uf,fone,nasc)
print '--- fim'


Vamos analisar o programa:
  • Linha 3: Olha o docstring. (gostei muito disso!) :-D
  • Linhas 4 e 5: simulo um registro lido de um arquivo csv, separado por ponto-e-vírgula. Observe a continuação da linha com uma "barra invertida".
  • Linha 7: veja o reg.split() separando o conteúdo variáveis independentes.
  • Linhas 8 e 9: estilo de formatação parecido com o do printf(). Novamente, a continuação de linha.
Poderíamos separar a string em uma tupla, mas não seria muito útil nesse caso. Faça você uns testes dessa forma para ver como ficaria.

Sugestão do Adam Brandizzi em 26/10/2008: use o módulo csv do Python para ler um arquivo delimitado. Ver detalhes em: www.python.org/doc/2.5.2/lib/module-csv.html -
Adicionado em 28/10/2008: Veja no exemplo 3 como ficou o programa usando o pacote csv.

Se você tem mais alguma contribuição sobre esse assunto ou encontrou um erro nesse programa, me avise. Ninguém é perfeito.
Se ajudou a você de alguma forma, me avise também. É gratificante saber. :-)
Se você encontrou alguma falha de iniciante que precisa melhorar, me avise, pois estou aprendendo.

Abraço.

Eu sou Vinicius Assef, um programador do século passado que gosta de Python, pratica Lean Development e acredita em Deus. Você pode me contactar por email ou twitter.

Um comentário:

  1. Para esse tipo de coisa, talvez o módulo csv seja mais interessante: http://www.python.org/doc/2.5.2/lib/module-csv.html

    ResponderExcluir

Marcadores