Python:json.loads返回前缀为“u”的项

2024-04-20 08:27:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我将收到一个JSON编码的字符串形式Obj-C,我正在解码一个虚拟字符串(目前)如下代码。我的输出在每个项目前面加上字符“u”:

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

JSON如何添加这个unicode字符?最好的方法是什么?

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

Tags: key字符串incomjsonvaluemail字符
3条回答

u前缀只是表示您有一个Unicode字符串。当您真正使用字符串时,它不会出现在您的数据中。不要被打印输出抛出。

例如,尝试以下操作:

print mail_accounts[0]["i"]

你不会看到你

下面的d3打印是您要查找的(转储和加载的组合):)

拥有:

import json

d = """{"Aa": 1, "BB": "blabla", "cc": "False"}"""

d1 = json.loads(d)              # Produces a dictionary out of the given string
d2 = json.dumps(d)              # Produces a string out of a given dict or string
d3 = json.dumps(json.loads(d))  # 'dumps' gets the dict from 'loads' this time

print "d1:  " + str(d1)
print "d2:  " + d2
print "d3:  " + d3

打印:

d1:  {u'Aa': 1, u'cc': u'False', u'BB': u'blabla'}
d2:  "{\"Aa\": 1, \"BB\": \"blabla\", \"cc\": \"False\"}"
d3:  {"Aa": 1, "cc": "False", "BB": "blabla"}

一切都很好,伙计。“u”是一件好事,它表示字符串在python 2.x中是Unicode类型

http://docs.python.org/2/howto/unicode.html#the-unicode-type

相关问题 更多 >