Last active
August 29, 2015 14:06
-
-
Save viniciusban/aa1a91ae56e093ad33d3 to your computer and use it in GitHub Desktop.
Transforma um dicionario unicode em json e tira os acentos de tudo.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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