我想python -c通过 shell 脚本运行以下代码:import json,sysobj=json.loads(open('/temp/209/209formatted_response.json','r').read())revision=obj['component']['referencingComponents'][0]['revision']for element in list(revision): if 'lastModifier' in element: del revision['lastModifier']print(revision)使用python -c,它在没有 for 循环的情况下运行良好,但如果我在其中包含 for 循环,它会抛出错误:下面工作正常:python -c "import json,sys; obj=json.loads(open('/temp/209/209formatted_response.json','r').read());revision=obj['component']['referencingComponents'][0]['revision']"下面给出错误:$ /opt/app/anaconda3/envs/anaconda3/bin/python -c "import json,sys; obj=json.loads(open('/temp/209/209formatted_response.json','r').read());revision=obj['component']['referencingComponents'][0]['revision'];for element in list(revision): if 'lastModifier' in element: del revision['lastModifier']; print(revision)" File "<string>", line 1 import json,sys; obj=json.loads(open('/temp/209/209formatted_response.json','r').read());revision=obj['component']['referencingComponents'][0]['revision'];for element in list(revision): if 'lastModifier' in element: del revision['lastModifier']; print(revision) ^SyntaxError: invalid syntax我什至尝试在行尾的\n循环的每个语句之前使用,但没有成功;
2 回答
GCT1015
TA贡献1827条经验 获得超4个赞
一种可能的解决方案是使用换行符,但不要直接添加它们:
$ python3 -c "exec(\"n = 3\nfor i in range(n):\n print(i)\")"
0
1
2
像您一样添加\n,但也将代码括起来"exec(\"...\")"
或者您可以插入真正的换行符:
$ python3 -c "n = 3
> for i in range(n):
> print(i)"
0
1
2
慕码人8056858
TA贡献1803条经验 获得超6个赞
问题在于缩进,因此您可以使用过滤函数来代替使用 for 和 if 语句
revision = list(filter(lambda x: not 'lastModifier' in x, list(revision)));
添加回答
举报
0/150
提交
取消