我正在为我和我的朋友构建一个slack robot,在这个过程中我使用了uptimerobot和slackapi。我的问题是,我不知道如何从uptimerobotapi的返回消息中只打印出某些值。代码现在是这样的:
import requests
#from subprocess import call
#UPTIMEROBOT
url = "https://api.uptimerobot.com/v2/getMonitors"
payload = "api_key=apikeyhere&format=json&all_time_uptime_ratio=1"
headers = {
'content-type': "application/x-www-form-urlencoded",
'cache-control': "no-cache"
}
response = requests.request("POST", url, data=payload, headers=headers)
如果我运行这个脚本,我会得到以下输出(有些被省略):
{"stat":"ok","pagination":{"offset":0,"limit":50,"total":3},"monitors":[{"id":value,"friendly_name":"name"
我现在要做的就是简单地运行脚本并将其导入awk,如下所示:
python3 slackbot.py | awk -F "friendly_name:" {'print $2'}
但它一点也不回。我想得到的只是一个没有引号的名字。你知道吗
如果有人能帮我,那就太好了。你知道吗
Awk
可能不是最好的解决方案,因为您可以通过将json数据视为对象来更轻松地操作它。使用命令行程序jq可以很好地工作,比如jq '.monitors[0].friendly_name'
。你知道吗基于您的问题使用json对象的工作示例:
awk命令不起作用的原因是,当您需要
friendly_name":"
时,您正在按friendly_name:
分割数据。你知道吗如果要添加
":"
,需要像这样转义双引号:这仍然会给你留下额外的
"
。您可以很容易地删除"
,但我建议您使用jq路线,因为它更易于维护。你知道吗相关问题 更多 >
编程相关推荐