如何使用PowerShell拆分数据并重新整理数组结构?
PowerShell数据拆分实现方案
你需要将每个KEY对应的分号分隔DATA拆分为多行,每个DATA值对应同一个KEY,同时过滤空DATA项。以下是修改后的代码及说明:
需求示例
原始数据结构
| KEY | DATA |
|---|---|
| KEY-A | Name1;Name2;Name3 |
| KEY-B | |
| KEY-C | Name1 |
目标数据结构
| KEY | DATA |
|---|---|
| KEY-A | Name1 |
| KEY-A | Name2 |
| KEY-A | Name3 |
| KEY-C | Name1 |
修改后的代码
$tempcontent = $webrequscontent.Content | ConvertFrom-Json $exportdata = @() if($tempcontent.total -eq 0){ $exportdata = [PSCustomObject]@{ key = "" data = " " } } else { foreach ($obj in $tempcontent.issues) { # 提取匹配内容并拆分为数组,过滤空值和纯空格项 $dataItems = (($obj.fields.customfield_16170 | Select-String -Pattern $pattern -AllMatches).Matches.value) -split ';' | Where-Object { $_ -notmatch '^\s*$' } # 遍历每个拆分后的Data项,生成独立记录 foreach ($item in $dataItems) { $exportdata += [PSCustomObject]@{ key = $obj.key Data = $item.Trim() } } } } # 导出为CSV文件 $exportData | Export-CSV "H:\list.csv" -Delimiter ';' -NoTypeInformation
关键说明
- 拆分与过滤:用
-split ';'把分号分隔的DATA拆成数组,再通过Where-Object过滤掉空字符串和仅含空格的项,避免生成无效行。 - 生成多行记录:遍历拆分后的每个DATA项,为每个项创建带对应KEY的
PSCustomObject,确保每个DATA值单独占一行。 - 空数据可选处理:如果需要保留KEY-B这类无DATA的记录,可添加如下代码到
foreach ($obj in $tempcontent.issues)块中(按需启用):# 可选:保留空DATA的KEY记录 if (-not $dataItems) { $exportdata += [PSCustomObject]@{ key = $obj.key Data = "" } }
内容的提问来源于stack exchange,提问作者JGaard
相关产品推荐
相关产品推荐

