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

如何将Python脚本输出的列表正确转换为Bash脚本中的数组

问题原因

你原来的sed切割逻辑存在缺陷:你把所有, (逗号加空格)统一替换为换行,但第一个元素Google USA (US Dollars, million)内部本身就包含, 字符组合,所以被提前错误切分成了两行,最终得到的数组元素自然不完整。

正确实现方案

方案1:修改Python输出格式(最稳妥,无额外依赖)

直接让Python脚本逐行输出列表元素,完全避免分隔符冲突,操作如下:
修改printlist.py,将原来直接打印列表的逻辑改为遍历输出:

# 假设你的原始列表变量为res
res = ['Google USA (US Dollars, million)','Google UK (sf.nk)','Google India(rk,lp)']
for item in res:
    print(item)

之后Bash中直接用mapfile读取即可,不需要额外的字符串处理:

mapfile -t arr < <(python3 /path/printlist.py)

方案2:不修改Python脚本,用JSON解析逻辑处理

如果不能调整Python代码,可以直接把Python输出的列表转成标准JSON格式后按结构解析,避免字符串匹配切割的误差:

mapfile -t arr < <(python3 /path/printlist.py | sed "s/'/\"/g" | jq -r '.[]')

如果环境没有预装jq,可以先通过系统包管理器安装(如apt install jq/yum install jq),该方案对任意内容的列表元素都兼容,不会出现切割错误。

效果验证

两种方案执行后,使用你原有的遍历代码即可输出完整元素:

Google USA (US Dollars, million)
Google UK (sf.nk)
Google India(rk,lp)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:54:08