ajuste a água conforme o foobar

Posted on 3 \d\e março \d\e 2009. Filed under: irc, python | Tags:, , , , |

Geralmente uma simples conversa de IRC gera um projeto. Desta vez foi o meu iconv_codecs, um módulo python para encodificação e decodificação usando os codecs definidos pelo GNU iconv. Leia aqui a conversa na íntegra:

<NandoFlorestan> socorro, o Python não tem uma encoding de que preciso. self._current_txt = pay.decode(charset, ‘ignore’)
<NandoFlorestan> LookupError: unknown encoding: ansi_x3.110-1983
<nosklo> NandoFlorestan, crie seu proprio encoding e registre-o
<NandoFlorestan> heheheheh. Talvez eu consiga usar o iconv
<vambboy nosklo, como criar um coding?
<vambboy> num sabia q era possível
<nosklo> vambboy, faca uma funcao pra encodificar, uma pra decodificar, uma classe que encodifique e decodifique incrementalmente, e subclasses para escrita e leitura de streams
<NandoFlorestan> vambboy, tá interessado? Quer fazer pra mim? Implementa aí o tal ansi_x3.110-1983…
<nosklo> vambboy, em seguida registre estas funcoes usando codecs.register()
<NandoFlorestan O nosklo é uma enciclopédia
<nosklo> eu ja fiz um encoding pra 13375p34k
<vambboy>  é o eu diga, ele nasceu com sangue de cobra
<vambboy> e cabra era o python
<vambboy> kkkkkk
<NandoFlorestan> “é o eu diga”?
<NandoFlorestan> cabra?
<vambboy> foi mal
<vambboy> era cobra
<nosklo> precisamos de um encoding pra decodificar as frases do vambboy
<NandoFlorestan> só por causa disso, meu próximo software em python vai se chamar CABRÓN
<vambboy nosklo, c te ofendi desculpa
<nosklo> ofendeu nada, eu nem entendi o q vc falou
<vambboy> kkkkkkkkkkkkk
* NandoFlorestan vê que vambboy está na berlinda…
<NandoFlorestan> cabra + python = cabrón
<nosklo> NandoFlorestan, tem alguma documentação deste encoding? não é mto difícil implementar encodings.
<NandoFlorestan> Maldito seja o feadapot que resolveu me mandar email com essa desgraça…
* NandoFlorestan não quer ficar fazendo encodings, saco
<vambboy> num intendi direito o q o NandoFlorestan quer fazer
<NandoFlorestan> vambboy, existe uma encoding chamada ansi_x3.110-1983
<NandoFlorestan> se você tentar usá-la no Python, dá erro
<NandoFlorestan> Ele não a conhece
<vambboy> nunca vi
<NandoFlorestan> Então eu vou ter que implementá-la e registrá-la
<NandoFlorestan> Tou a fim de delegar para o iconv que todo linux tem
<vambboy> onde é aplicada
<NandoFlorestan> também nunca vi
<vambboy> em q tipos d caracteres?
<NandoFlorestan> não sei, mas é exótica mesmo
* NandoFlorestan não decodificou e portanto não leu o email
<vambboy> ah tah
<vambboy> e quem diabos mandaria um email assim?
<vambboy> um agente secreto?
<NandoFlorestan> heheheh
<NandoFlorestan> vai ajudar ou só zoar?
<vambboy> bem
<vambboy> procurarei algo
* NandoFlorestan saca seu editor de textos colaborativo
<NandoFlorestan> …como chamava mesmo?
<nosklo> NandoFlorestan, se vc tiver documentação do encoding fica fácil, delegar pro iconv sux
<nosklo> hummmmmmmm
<NandoFlorestan> gobby
* nosklo começa a escrever um encoding para iconv x.decode(‘iconv:XXXX’) onde XXXX é passado para o iconv
<nosklo> mas relaxe, mto breve vc poderá usar qq codec suportado pelo iconv
<NandoFlorestan> 😀
* nosklo está modificando o código q já tinha
* NandoFlorestan pensa num recurso: dar um iconv –list e registrar todos os codecs que Python não tenha
<nosklo> besteira
<nosklo> NandoFlorestan, x.decode(‘iconv:xxxx’)
<nosklo> NandoFlorestan, vc só roda o subprocesso iconv se precisar usar o codec
<vambboy> em q módulo se encontra o iconv?
<nosklo> vambboy, iconv é um aplicativo escrito em C
* NandoFlorestan testa
<nosklo> NandoFlorestan, hah, teste depois q eu mandar o codigo 🙂
<NandoFlorestan nosklo, não faz ‘iconv:xxx’
<NandoFlorestan> faz com o nome correto da encoding: ansi_x3.110-1983
<nosklo> NandoFlorestan, entao, isso q estou falando
<nosklo> NandoFlorestan, no seu caso vc vai usar, suastring.decode(‘iconv:ansi_x3.110-1983’)
<NandoFlorestan> mas sem prefixo iconv:
<NandoFlorestan> tá, mas eu vou mudar seu código pra tirar o prefixo
<nosklo> NandoFlorestan, bom ok
<NandoFlorestan> porque isso tá chegando de um email e eu não quero ficar lidando com exceções
<nosklo> NandoFlorestan, a minha idéia é não precisar saber de antemão quais os codecs que tem disponíveis, pq senão eu tenho que chamar o iconv mesmo se não for precisar dele
<NandoFlorestan> Faz sentido, mas eu acho que precisamos dos 2 modos de operação então
<NandoFlorestan nosklo, o comando é iconv -f utf8 -t ansi_x3.110-1983 -c
<NandoFlorestan> -f é from, -t é to, -c é pra omitir caracteres inválidos.
<nosklo> o -c será dado se vc passar x.decode(‘iconv:xxx’, errors=’ignore’)
<NandoFlorestan> isso isso
<nosklo> pronto, .decode e .encode já está funcionando
<nosklo> agora vou fazer codecs.open(‘arq’, encoding=’iconv:xxxx’)
<vambboy> quando terminarem manda um paste aí, quero estudar o código
<NandoFlorestan nosklo, http://pypi.python.org/pypi/iconv/1.0
<nosklo> argh
<nosklo> ja existe
* nosklo deleta tudo
<NandoFlorestan> caaalma
<NandoFlorestan> tem que ver se é bom
<nosklo> testa aí então, vou comer alguma coisa
<NandoFlorestan> nosklo, import iconv já dá pau
<NandoFlorestan> nosklo, essa porcaria de módulo iconv não funfa porque foi feito em C em 2005
<nosklo> NandoFlorestan, okay, continuando

(… alguns minutos depois …)

<nosklo> bom, tá funcioando
<nosklo> funcionando
<nosklo> NandoFlorestan, vambboy, huahauhauahuaha
<nosklo> >>> u’teste’.encode(‘iconv:CP284’)
<nosklo> ‘\xa3\x85\xa2\xa3\x85’
<nosklo> >>> _.decode(‘iconv:CP284′)
<nosklo> u’teste’
<NandoFlorestan> nosklo, cadê?
<NandoFlorestan> cá… dê !!! dê cá!
<NandoFlorestan nosklo… por favor?
<nosklo> NandoFlorestan, opa… ja vai, colando…
<vambboy> nosklo, tô vuando isso quer dizer que funcionou?
<nosklo> NandoFlorestan, vambboy, tá ai http://dpaste.com/5377/
<nosklo> só dá um import estearquivo
<nosklo> e pronto
<nosklo> vc pode usar qq codec do iconv
<nosklo> no codecs.open etc

Anúncios

Make a Comment

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

4 Respostas to “ajuste a água conforme o foobar”

RSS Feed for foobar + h2o Comments RSS Feed

essa foi d+, blog massa e iconv_codecs melhor ainda.(num intendi nada que disse kkkkkkkkkk)

o link do pastebin expirou.. tem como passar o fonte aqui nos coments?

rodfersou, aquele pastebin foi feito na hora da conversa. O módulo foi publicado no pypi. O endereço está no post mas vou repetir: http://pypi.python.org/pypi/iconv_codecs. A documentação online está aqui: http://packages.python.org/iconv_codecs/

very nice job
big thanks


Where's The Comment Form?

  • Blog Stats

    • 4,163 hits
  • contribua!

Liked it here?
Why not try sites on the blogroll...