arrays - 无法从按特定标题过滤的 CSV 文件中提取第一行
问题描述
我有一个 csv 文件,其中包含如下数据:
account,id,name
1234,a3bu5,test
12,b4cf8,test
789,t4wy7,test2
我需要按名称标题过滤并将所有帐号提取到一个数组中。
在我当前的代码中,我正在遍历多个名称,并希望将它们的帐号存储在单独的数组中。(即本例中的 (1234,12) 和 (789))
示例代码(选择标题):
$namesToParse = @("test")
$inputFile = "output.csv"
$testArray = @()
$csvFile = Import-csv $inputFile
For ($i = 0; $i-le $namesToParse.length-1; $i++) {
(" - Getting account numbers for '{0}'`n" -f ($namesToParse[$i]) ) | write-host -ForegroundColor Blue
#SELECT HEADER
$csv = $csvFile | Select-String -Pattern $namesToParse[$i] | select $csvFile.account | Out-String
}
$testArray = $csv.split(",")
$testArray[0]
示例代码(选择行):
$namesToParse = @("test")
$inputFile = "output.csv"
$testArray = @()
$csvFile = Import-csv $inputFile
For ($i = 0; $i-le $namesToParse.length-1; $i++) {
(" - Getting account numbers for '{0}'`n" -f ($namesToParse[$i]) ) | write-host -ForegroundColor Blue
#SELECT LINE
$csv = $csvFile | Select-String -Pattern $namesToParse[$i] | select line | Out-String
}
$testArray = $csv.split(",")
$testArray[0]
我知道问题来自我的 csv 变量,但我不确定用什么来显示我的结果。我在网上找到的最接近的示例涉及选择如上所示的帐户标题,但这忽略了按名称过滤并显示所有帐号的模式。如果我使用选择行而不是帐户,则该模式有效,但收到了所有值,我留下的数据比我需要的多。这为我希望消除的脚本添加了额外的步骤。
检索我需要的信息的最佳方法是什么,或者我是否错误地传递了这些信息?
解决方案
我同意,你似乎把事情复杂化了。
Import-csv
读取数据Format-Table
使用 -GroupBy 参数
> Import-Csv .\output.csv | Format-Table account -GroupBy name
name: test
account
-------
1234
12
name: test2
account
-------
789
另一种收集每个名称帐户的方法Group-Object
Import-Csv .\output.csv | Select-Object account,name |
Group-Object name | ForEach-Object {
"{0,15}:{1}" -f $_.name,($_.group.account -join ',')}
test:1234,12
test2:789
或根据该信息创建一个新表
$NewTable = Import-Csv .\output.csv | Select-Object account,name |
Group-Object name | ForEach-Object {
[PSCustomObject]@{
'Name' = $_.name
'Accounts' = ($_.group.account -join ',')
}
}
$NewTable
Name Accounts
---- --------
test 1234,12
test2 789
推荐阅读
- xml - 如何使用 MapForce(csv 到 xml)删除所有空标签?希望抑制空节点输出
- javascript - 使用 Javascipt 更改类
- sas - 需要一起设置未知数量的数据集
- java - Jackson - 动态添加枚举值时,EnumValues 序列化失败
- mysql - MariaDB:差异“INNER JOIN ... USING”和“INNER JOIN ... ON”
- python - Python - 有效地连接压缩文件
- django - Ajax 触发请求不更新 Django 视图
- python - 如何将具有一个数据框/行的列拆分为多行(熊猫)?
- isabelle - 在 Isabelle 中使用重写库
- java - 为什么我们可以在 Optional.of() 上调用 .orElse()?