![](/img/trans.png)
[英]How can I generate a new List which is filtered and sorted in a Single Line command using List Comprehension in Python?
[英]how can I parse json with a single line python command?
我想在批處理腳本中使用 python 來解析 JSON,例如:
HOSTNAME=$(curl -s "$HOST" | python ?)
curl 的 JSON 輸出如下所示:
'{"hostname":"test","domainname":"example.com"}'
如何使用單行 python 命令執行此操作?
基於從 curl 命令返回的以下 JSON ...
'{"hostname":"test","domainname":"example.com"}'
然后,您可以使用 python 使用 python json 模塊提取主機名:
HOSTNAME=$(curl -s "$HOST" |
python -c \
'import json,sys;print(json.load(sys.stdin)["hostname"])')
請注意,我使用\
拆分了行,以使其在 stackoverflow 上更具可讀性。 我還根據chepner 的評論簡化了命令。
原始來源: 使用 Unix 工具解析 JSON
另見: https ://wiki.python.org/moin/Powerful%20Python%20One-Liners
echo '{"hostname":"test","domainname":"example.com"}' | python -m json.tool
由於 Python 是多平台的,因此需要注意 Linux 和 Windows 之間的差異,尤其是因為它們對待雙引號/單引號的方式不同。
其次,以前的一些答案有點過時了:在 python2 中,允許不帶括號的print
。 然而,在 python3 中,print 必須在括號之間。
如何放置雙引號/單引號並不重要。 Json 可以用“keys”或“keys”兩種方式解析
HOSTNAME=$(curl -s "$HOST" |
python3 -c 'import json,sys;print(json.load(sys.stdin)["hostname"])')
它也有效:(注意鍵的單/雙引號)
HOSTNAME=$(curl -s "$HOST" |
python3 -c "import json,sys;print(json.load(sys.stdin)['hostname'])")
json 中的鍵必須在單引號之間。 僅接受以下語法。
ConvertTo-Json
函數生成對象並使用單引號之間的鍵。
$HOSTNAME=(Invoke-RestMethod $HOST | `
ConvertTo-Json | `
python3 -c "import json,sys; print(json.load(sys.stdin)['hostname'])")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.