You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Bash命令行执行Python内联代码时遇语法错误求助

问题原因与解决方法

错误原因

Python语法规则里,分号;仅用于分隔独立的简单语句(如导入、赋值、单一打印操作),而for循环属于复合语句,它需要后续缩进的代码块,不能直接用分号与前面的简单语句串联在同一行。你把复合语句和简单语句用分号强行拼接,违反了Python的语法规范,因此触发SyntaxError。

解决方案

方案1:保留正常Python缩进,用换行分隔语句

在Bash的双引号内可以直接换行,让Python代码保持正常的缩进结构:

string='[{"url": "https://www.example.com/1", "description": "URL example number 1", "name": "test1", "id": "1"}, {"url": "https://www.example.com/2", "description": "URL example number 2", "name": "test2", "id": "2"}]'

echo "$string" | python3 -c "import sys,json
data = json.load(sys.stdin)
for item in data:
    print(item['id'])"

注意:这里把原字符串改成了标准JSON格式(双引号包裹键值),避免json.load解析时出现潜在错误。

方案2:用生成器表达式简化为单条简单语句

把循环逻辑塞进生成器表达式,转化为Python允许的简单语句形式,就能继续用分号串联:

string='[{"url": "https://www.example.com/1", "description": "URL example number 1", "name": "test1", "id": "1"}, {"url": "https://www.example.com/2", "description": "URL example number 2", "name": "test2", "id": "2"}]'

echo "$string" | python3 -c "import sys,json; data=json.load(sys.stdin); print('\n'.join(item['id'] for item in data))"

这种方式通过join把所有id拼接成换行分隔的字符串,一次打印输出,效果和循环打印一致。

内容的提问来源于stack exchange,提问作者tuffo19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:52:22