1. ホーム
  2. python

[解決済み] Python: json.loads は 'u' を前置詞とするアイテムを返す

2022-04-23 05:18:50

質問

Obj-CからJSONエンコードされた文字列を受け取ることになり、以下のコードのようなダミー文字列を(とりあえず)デコードしているところです。私の出力は、各項目の前に文字'u'を付けて出力される。

[{u'i': u'imap.gmail.com', u'p': u'aaaa'}, {u'i': u'333imap.com', u'p': u'bbbb'}...

JSONはどのようにしてこのunicode charを追加しているのでしょうか?これを削除する最良の方法は何ですか?

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

解決方法は?

u-という接頭辞は、単にUnicodeの文字列を持っていることを意味します。 本当にその文字列を使うときは、データには表示されません。 印刷された出力に振り回されないでください。

例えば、こうしてみてください。

print mail_accounts[0]["i"]

uは表示されません。