Będę otrzymywać kodowaną przez JSON ciąg znaków Obj-C i dekoduję łańcuch dummy (na razie) jak poniższy kod. Moja moc wychodzi z charakterem „U” poprzedzając każdą pozycję:Python: json.loads zwraca pozycje poprzedzające prefiksem 'u'
[{u'i': u'imap.gmail.com', u'p': u'aaaa'}, {u'i': u'333imap.com', u'p': u'bbbb'}...
Jak JSON dodanie tego unicode char? Jaki jest najlepszy sposób, aby go usunąć?
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
Python ma pr oblem tutaj. Wszystko nie jest chłodem. Dostaję błędy w łańcuchach, które tworzy Python, gdy próbuję zapisać te ciągi do pliku. Na przykład, gdy python pobiera "53" z JSON, zamienia go na u'53 'i próbuje zapisać go do pliku jako heksadecymalnej u' \ xe1 ', co powoduje, że Python bierze doskonale dobry ciąg i rzyga na niego: JSON: {"sa_BstDeAv": "53", "sa_BwVUpMx" ... PYTHON: {u'sa_BstDeAv ': u'53', u'sa_BwVUpMx '... BŁĄD NA PISMA: Błąd wartości (kodek 'ascii' nie może kodować znaków u '\ xe1' w pozycji 5: porządkowy nie w zakresie (128)) –
@janehouse Właściwą odpowiedzią tutaj jest odpowiedź jdi I really myśl, że powinieneś to zmienić. – Dekel