我有一个名为“test”的变量
print test
给了我以下内容。
{"confir": null, "created": "2014-11-07T02:25:21.628730", "email": "asdfs@tyekjhsad.ytg", "first_name": null, "paid": "Y", "id": 33, "is_avail": false, "last_name": null, "que_num": 8, "line": 6, "api_uri": "/api/v1/somehinh/54/", "sent": null, "sub_line": 0, "unique_id": "sdsixq"}
print type(test)
给了我这个:
<class 'tastypie.http.HttpCreated'>
dir(test)
是:
['__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__getstate__', '__hash__', '__init__', '__iter__', '__module__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_base_content_is_iter', '_charset', '_closable_objects', '_consume_content', '_container', '_convert_to_charset', '_handler_class', '_headers', 'close', 'content', 'cookies', 'delete_cookie', 'flush', 'get', 'has_header', 'items', 'make_bytes', 'next', 'serialize', 'serialize_headers', 'set_cookie', 'set_signed_cookie', 'status_code', 'streaming', 'tell', 'write']
现在我想从中提取email
。我怎么能这样做?
我为它分配了一个变量,然后尝试了variable['email']
,但由于它不是一个字典而给出错误。我无法更改测试变量的值,但我需要从中提取电子邮件。
答案 0 :(得分:2)
您似乎正在使用tastypie库来返回Django响应。在你的案例测试中,变量不是dict,而是应该实现dict接口的对象。
我已经浏览过Django和tastypie来源,是的,这应该可行:
test['email']
你也可以尝试:
test.get('email')
另请参阅关于django.http.HttpResponse
的官方Django文档,因为tastypie.http.HttpCreated不会改变很多继承的功能:
答案 1 :(得分:0)
Tastypie HttpCreated
只不过是HttpResponse
类的一个小包装。
这就是说,您应该可以通过status_code
从test
变量中获得test.status_code (should be 201)
。如果这样做,您可以使用test.content
获取数据。现在请记住,这是一个你得到的JSON字符串。
# Little Example
import json
json_decoder = json.JSONDecoder()
print json_decode.decode(test.content)
print json_decode.decode(test.content)['email']
最后一个应该回复一个电子邮件地址。
答案 2 :(得分:-1)
当您在dict
变量中存储test
时,测试包含一个字典,因此您需要提取的只是test[key]
。所以:
test['email']
在test
dict中,如果null
为空,则使用None
代替null
。
答案 3 :(得分:-1)
在字典中,将 null和false放在双引号中,其作用类似于字符串,因此它给出了错误。您可以尝试使用以下代码:
x={"confir": "null", "created": "2014-11-07T02:25:21.628730", "email": "asdfs@tyekjhsad.ytg", "first_name": None, "paid": "Y", "id": 33, "is_avail": "false", "last_name": "null", "que_num": 8, "line": 6, "api_uri": "/api/v1/somehinh/54/", "sent": "null", "sub_line": 0, "unique_id": "sdsixq"}
print x["email"]
输出:
>>>
asdfs@tyekjhsad.ytg