gpt4 book ai didi

python - 我如何解析 JSON 字符串并在 Linux 上使用 Python 打印它?

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:53 24 4
gpt4 key购买 nike

这是一个非常基本的问题,但我根本不懂 Python,所以我问你们。

我想在 Linux 命令上使用 Python 解析 JSON 字符串。如果 JSON 字符串中 id 列的值为 "ok",我想打印。

例如,

extected (1) -> 如果 id == ok
$ echo '{"id": "ok", "name": "b"}' | python -c 'import json,sys; `blah blah blah.....'

{"id": "ok", "name": "b"}
extected (2) -> 如果 id != ok
$ echo '{"id": "no", "name": "a"}' | python -c 'import json,sys; `blah blah blah.....'
(empty)

我尝试了很多尝试来解决这个问题,但都失败了..

echo '{"id":"ok", "name": "a"}' | python -c 'import json,sys; d=sys.stdin; obj=json.load(d); print (d if obj["id"] == "ok" else "")'
<open file '<stdin>', mode 'r' at 0x7fb6391060c0>

所以我认为变量 d 是一个对象,而不是一个值。所以我尝试使用 read()

echo '{"id":"ok", "name": "a"}' | python -c 'import json,sys; d=sys.stdin; obj=json.load(d); print (d.read() if obj["id"] == "ok" else "")'
(empty)

我不知道为什么什么都没有打印..

请帮帮我T.T

最佳答案

关于 d 是一个对象,你是对的。您应该输出 json.parse 读取的内容:

echo '{"id":"ok", "name": "a"}' | python -c 'import json,sys; d=sys.stdin; obj=json.load(d); print (obj if obj["id"] == "ok" else "")'

如果您希望以标准 JSON 语法输出,请将 obj 更改为 json.dumps(obj)

你的第二个解决方案不起作用的原因是因为 json.parse 已经从 stdin 读取了所有内容并且 read() 没有重置流位置(这是标准输入不可能以开头)。

关于python - 我如何解析 JSON 字符串并在 Linux 上使用 Python 打印它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42063526/

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