根据一列的值拆分 csv 文件

Posted

技术标签:

【中文标题】根据一列的值拆分 csv 文件【英文标题】:Spliting a csv file based on the value of one column 【发布时间】:2017-10-10 02:37:47 【问题描述】:

我有一个 csv 文件,我必须根据列的值对其进行拆分。 我正在使用以下脚本来执行此操作:

Import-Csv test.csv | Group-Object -Property "Nr dep" | 
Foreach-Object $path=$_.name+".csv" ; $_.group | 
Export-Csv -Path E:\PowerShell\script\$path -NoTypeInformation

文件根据Nr dep 值列拆分为文件,但带有引号,并且仅适用于逗号分隔的 csv 文件。 我尝试使用-replace,但仍然没有结果(也许我写得不好)

Import-Csv test.csv | Group-Object -Property "Nr dep" | 
Foreach-Object $path=$_.name+".csv" ; ($_.group | 
ConvertTo-Csv  -NoTypeInformation)  -replace '"', "" | Out-File E:\PowerShell\script\$path -Force

1) 如何将分隔符设为半逗号而不是逗号 2) 我怎样才能摆脱引号 3) 是否可以使用 .xlsx 输出文件而不是 .csv 文件

【问题讨论】:

【参考方案1】:

1) 可以使用-Delimiter参数指定分隔符:

Import-Csv test.csv -Delimiter ';'

2) 使用您已经使用的-replace '"'

3) 你需要一个框架 // 应用程序。

【讨论】:

@Clijsters 3) 没有错。 PSExcel 也在使用 dll。 对于 -replace 实际上如我的问题所示,我认为这将是解决方案,但是一旦我添加了脚本,我就没有错误,但在指定的输出文件中没有结果 @MartinBrandl 但不是框架或外部应用程序。它只是实现了 EPPlus。 @Clijsters 它仍然是一个库。如果您有使用 plain PowerShell 的解决方案,我将编辑我的答案。

以上是关于根据一列的值拆分 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

将数据拆分为训练/测试文件,以便为两个文件选择至少一个样本

SQLite 在另一列的值上拆分列

迭代数据框并根据一列的值在具有前一行值的新列中执行操作

R中根据特定字符将一列拆分为几列的方法

根据列的值快速拆分 MySQL 表

熊猫通过根据另一列的值添加列级别来重塑数据框[重复]