Python: json.loads devuelve elementos con el prefijo 'u'
Recibiré una cadena codificada en JSON de Objective-C y estoy decodificando una cadena ficticia (por ahora) como el siguiente código. Mi salida aparece con el carácter 'u' precediendo cada elemento:
[{u'i': u'imap.gmail.com', u'p': u'aaaa'}, {u'i': u'333imap.com', u'p': u'bbbb'}...
¿Cómo agrega JSON este carácter Unicode? ¿Cuál es la mejor manera de eliminarlo?
mail_accounts = []
da = {}
try:
s = '[{"i":"imap.gmail.com","p":"aaaa"},{"i":"imap.aol.com","p":"bbbb"},{"i":"333imap.com","p":"ccccc"},{"i":"444ap.gmail.com","p":"ddddd"},{"i":"555imap.gmail.com","p":"eee"}]'
jdata = json.loads(s)
for d in jdata:
for key, value in d.iteritems():
if key not in da:
da[key] = value
else:
da = {}
da[key] = value
mail_accounts.append(da)
except Exception, err:
sys.stderr.write('Exception Error: %s' % str(err))
print mail_accounts
Aceptado
El prefijo u- simplemente significa que tienes una cadena Unicode. Cuando realmente uses la cadena, no aparecerá en tus datos. No se deje sorprender por el resultado impreso.
Por ejemplo, prueba esto:
print mail_accounts[0]["i"]
No verás una u.
Todo está bien, hombre. La 'u' es algo bueno, indica que la cadena es de tipo Unicode en Python 2.x.
http://docs.python.org/2/howto/unicode.html#the-unicode-type