Skip to content

Instantly share code, notes, and snippets.

@viniciusban
Last active August 29, 2015 14:06
Show Gist options
  • Save viniciusban/aa1a91ae56e093ad33d3 to your computer and use it in GitHub Desktop.
Save viniciusban/aa1a91ae56e093ad33d3 to your computer and use it in GitHub Desktop.
Transforma um dicionario unicode em json e tira os acentos de tudo.
# -*- coding: utf-8 -*-
'''Transforma um dicionario unicode em json e tira os acentos de tudo.'''
import json
from unicodedata import normalize
dados_em_utf8 = {u'texto': u'n\xe3o sei de nada.'}
print '- Dados que vieram do form em utf-8:', dados_em_utf8
print ' tipo:', type(dados_em_utf8)
print ' * Note que tanto a chave como o valor do dicionario sao unicode'
u = json.dumps(dados_em_utf8, ensure_ascii=False)
print '- Dados transformados em string json:', u
print ' tipo:', type(u)
print ' * Atencao: o dumps() retornou unicode por causa do ensure_ascii=False'
s = u.encode('utf-8')
print '- Dados codificados em utf-8:', s
print ' tipo:', type(s)
print ' * Atencao: agora eh str codificada em utf-8. Nao eh unicode mais.'
# Usando o dado str, tem que fazer o decode() abaixo p/ transformar p/ unicode.
n = normalize('NFKD', s.decode('utf-8')).encode('ASCII', 'ignore')
# Se usar o dado unicode nao precisa do decode().
# n = normalize('NFKD', u).encode('ASCII', 'ignore')
print '- Dados sem acento:', n
print ' tipo:', type(n)
print 'fim'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment