gpt4 book ai didi

python - 我需要直接打印匹配字符串之后的内容

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:04 25 4
gpt4 key购买 nike

我正在为我和我的 friend 构建一个 Slack 机器人,在此过程中我使用了 uptimerobot 和 slack API。我的问题是我无法弄清楚如何从 uptimerobot API 的返回消息中仅打印某些值。这就是代码现在的样子:

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 数据视为对象来更轻松地操作它。使用命令行程序jqjq '.monitors[0].Friendly_name' 等类似的东西会很好地工作。

根据您的问题使用 json 对象的工作示例:

echo '{"stat":"ok","pagination":{"offset":0,"limit":50,"total":3},"monitors":[{"id":1,"friendly_name":"name"'}]} | jq '.monitors[0].friendly_name'

您的 awk 命令不起作用的原因是,当您想要 friend_name":" 时,您却按 friend_name: 分割数据。

如果您想添加 ":" 您需要像这样转义双引号:

awk -F "friendly_name\":\"" {'print $2'}

这仍然会给你留下一个额外的 " 。你可以很容易地删除 " 但我建议你走 jq 路线,因为它会是更容易维护。

关于python - 我需要直接打印匹配字符串之后的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43547459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com