2

我在尝试让 ackknowalgemtns 与 python 一起工作时遇到一些问题。

到目前为止,我的代码发布了消息并获得了 JSON 字符串作为回报,但现在我需要一种方法来从字符串中获取收据

import requests
app_token = 'app token'
user_token = 'user token'
title = 'TEST MESSGAE'
text = 'text for polling'
params = {
            'token': app_token,
            'user': user_token,
            'title': title,
            'message': text,
            'retry': 30, 
            'expire': 180,
            'priority': 2,
            'sound': 'siren',
        }
msg = requests.post('https://api.pushover.net/1/messages.json', data=params)
print "POSTed message"
print msg.json()

输出是

POSTed message
{u'status': 1, u'receipt': u'riD7NEukZsiDQpjhiNppphYnpue8uK', u'request': u'ef5f42d568e966cbf3d2b28c6579397c'}

该参数是一个区分大小写的 30 个字符的字符串,包含字符集 [A-Za-z0-9]。这会是一个正则表达式的工作吗?

4

1 回答 1

3

因为它是 json 类型,所以你可以只使用json模块将数据加载为dict. 例如,如果您有一些像这样的 json 数据:

'{"message":"Hello there, wayfaring stranger"}'

然后你可以使用json.loads()函数来加载它,dict如下所示:

>>> a = '{"message":"Hello there, wayfaring stranger"}'
>>> import json
>>> d = json.loads(a)
>>> d.items()
dict_items([('message', 'Hello there, wayfaring stranger')])
>>> 

如您所见,a它是字符串,但d它是一个字典。现在, 'Hello there, wayfaring stranger'是 key 的值'message'


但是msg.json()可以自动将 json 数据转换为 dict,所以这里不需要 json 模块。所以如果你想得到'ef5f42d568e966cbf3d2b28c6579397c',你可以简单地做这样的事情:

json_data = msg.json()
print json_data['request']
于 2015-10-17T23:57:34.670 回答