当前位置:  开发笔记 > 编程语言 > 正文

带有if块的Python单行

如何解决《带有if块的Python单行》经验,为你挑选了1个好方法。

我有一个从json接收数据的bash脚本.我想将json解析委托给python并使用bash操作其他东西.所以我尝试了以下它并且它有效:

$cat json.txt | python -c "import sys, json; app_data=json.load(sys.stdin); print app_data['item'][0]['id'];"

我决定查看列表大小:

$cat json.txt | python -c 'import sys, json; app_data=json.load(sys.stdin); if len(app_data['item'])==1: print '1 item:'; print app_data['item'][0]['id']'

它因SyntaxError失败:语法无效.

列表大小检查(上面的代码)通常来自单独的.py文件.我更喜欢使用单行代码来保持简单并在shell脚本中存储在一起.

是否可以使用某些逻辑运行python one-liner(如import json)和if block?



1> dnswlt..:

这里已经回答了类似的问题: 在一行命令行中执行Python多行语句.总之,使用有趣$''引用(它解释逃脱就像\n)应该起作用,至少在bash中:

$ cat json.txt
{"item": [{"id": 1}]}

$ cat json.txt | python -c $'import sys, json;\nd=json.load(sys.stdin)\nif len(d["item"])==1: print("""1 item:\n%s""" % d["item"][0]["id"])'
1 item:
1

从语法POV来看,问题是Python ;只允许用作所谓的分隔符simple_stmt.但这if_stmt不是一个简单的陈述.请参阅https://docs.python.org/2/reference/simple_stmts.html#grammar-token-simple_stmt.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有