【问题标题】:How to split a line into multiple lines?如何将一行拆分为多行?
【发布时间】:2015-09-29 11:42:03
【问题描述】:

我有一个 CSV 文件,看起来像这样:

Column1,Column2,Column3
John,Smith,"AA, AH, CA, NI, PB"
Reginald,Higginsworth,"AA, AH, CA, NI, PB, SN, ZS"

您会注意到Column3 中有多个值(括在引号中)。 我需要做的是在 CSV 中为Column3 中的每个值生成一行数据,即文件需要看起来像:

Column1,Column2,Column3
John,Smith,AA
John,Smith,AH
John,Smith,CA
John,Smith,NI
John,Smith,PB
Reginald,Higginsworth,AA
Reginald,Higginsworth,AH
Reginald,Higginsworth,CA
Reginald,Higginsworth,NI
Reginald,Higginsworth,PB
Reginald,Higginsworth,SN
Reginald,Higginsworth,ZS

我在这方面进行了多次尝试,但似乎无法做到这一点。

【问题讨论】:

  • 下次请描述您尝试过的方法,以及如何未能产生所需的结果。否则,您的问题基本上是在问“为我编写代码”,这很容易导致投票失败。
  • 好的,谢谢你的建议。我将编辑我的帖子并添加我的尝试!

标签: powershell csv split


【解决方案1】:

使用Import-Csv 读取输入文件,然后拆分第三列并为每个结果元素创建新的输出行:

Import-Csv 'C:\path\to\input.csv' | ForEach-Object {
  foreach ($value in ($_.Column3 -split ', ')) {
    $_ | Select-Object -Exclude Column3 -Property *,@{n='Column3';e={$value}}
  }
} | Export-Csv 'C:\path\to\output.csv' -NoType

Select-Object 构造将现有属性 Column3 替换为仅包含单个值的新属性 Column3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    相关资源
    最近更新 更多