您必须遍历错误的数据集。只需直接在JSON加载的字典上循环,就不需要先调用
.keys():
data = json.loads(response)myList = [item for item in data if item == "number1"]
您可能要使用
u"number1"以避免在Unipre和字节字符串之间进行隐式转换:
data = json.loads(response)myList = [item for item in data if item == u"number1"]
两种版本都 可以正常工作 :
>>> import json>>> data = json.loads('{"number1":"first", "number2":"second"}')>>> [item for item in data if item == "number1"][u'number1']>>> [item for item in data if item == u"number1"][u'number1']
请注意,在您的第一个示例中,
us它 不是
UTF-8字符串。它是unipre数据,该
json库已经为您解码了。另一方面,UTF-8字符串是序列 编码的bytes
。您可能需要阅读Unipre和Python来了解它们之间的区别:
每个软件开发人员绝对,肯定必须绝对了解Unipre和字符集(无借口!)作者:Joel Spolsky
在Python的Unipre指南
Ned Batchelder的实用Unipre
在Python 2上,您期望测试返回的
True结果正确无误,但您做错了其他事情:
>>> us = u'MyString'>>> usu'MyString'>>> type(us)<type 'unipre'>>>> us.enpre('utf8') == 'MyString'True>>> type(us.enpre('utf8'))<type 'str'>
有 没有 必要将字符串编码成UTF-8进行比较; 改用unipre文字:
myComp = [elem for elem in json_data if elem == u"MyString"]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)