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

如何在PowerShell中按repeat字段重复行将列表转为CSV

解决PowerShell按repeat属性重复行生成CSV的问题

要实现按repeat属性值重复对应行的需求,核心思路是为每个数据对象生成指定次数的重复输出,再统一转换为CSV。以下是具体实现:

完整代码示例

$str = '[
    {"attrs": { "id": "A", "repeat": 2}},
    {"attrs": { "id": "B", "repeat": 3}}
    ]'
$json = $str | ConvertFrom-Json

# 生成重复的对象集合
$repeatedItems = $json | ForEach-Object {
    $attrs = $_.attrs
    # 根据repeat值循环输出当前对象
    1..$attrs.repeat | ForEach-Object { $attrs }
}

# 转换为目标CSV格式
$repeatedItems | ConvertTo-Csv -NoTypeInformation -UseQuotes AsNeeded

代码说明

  1. 遍历JSON对象:先将JSON字符串转换为PowerShell对象,然后逐个取出每个对象的attrs属性;
  2. 生成重复对象:利用1..$attrs.repeat创建一个从1到repeat数值的序列,遍历该序列时每次输出当前的attrs对象,这样就得到了重复指定次数的对象集合;
  3. 转换为CSV:将重复后的对象集合整体转换为CSV,即可得到每行对应repeat次数的结果。

流式处理(类似Generator特性)

如果处理的数据量较大,不想一次性生成所有重复对象,可以直接用管道流式处理,避免占用过多内存:

$str = '[
    {"attrs": { "id": "A", "repeat": 2}},
    {"attrs": { "id": "B", "repeat": 3}}
    ]'
$str | ConvertFrom-Json | ForEach-Object {
    $attrs = $_.attrs
    1..$attrs.repeat | ForEach-Object { $attrs }
} | ConvertTo-Csv -NoTypeInformation -UseQuotes AsNeeded

这段代码会在管道中逐次处理每个对象并生成重复项,无需预先存储所有结果,更接近你提到的generator延迟生成特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:05:26