尝试将非标准CSV文件中的列转换为数组。我没有能力更改输入文件,因为它来自供应商。
下面是Test.csv中的数据:
"Format","MoTeC CSV File"
"Beacon Markers","171.091 322.385 481.229 630.624 778.92"
下面是我的代码:
$dataDir = "G:\Desktop Files\Exports"
$Test1CSV = "$dataDir\MoTeC_Test1.csv"
$Test2CSV = "$dataDir\MoTeC_Test2.csv"
$Test3CSV = "$dataDir\MoTeC_Test3.csv"
Clear-Content $Test1CSV,$Test2CSV,$Test3CSV
$inputCSV = "$dataDir\Test.csv"
$BM = (Import-Csv $inputCSV | Select-Object 'MoTeC CSV File' ) | select -Property @{Name='BM' ;Expression={$_.'MoTeC CSV File'.replace(' ',',')}}| export-CSV $Test1CSV -NoTypeInformation
set-content $Test1CSV ((get-content $Test1CSV) -replace '"' )
$BM2 = (Get-Content $Test1CSV.split(","))
$BM3 = $BM2.split(',') | out-file $Test2CSV
$i = @{ Counter = 0 } #this sets the Lap #
Import-Csv $Test2CSV | Select-Object @{ N='Lap'; E={ (++$i.Counter) }}, @{ N='BeaconMarker'; E={ $_.'BM'.split(',')} } | Export-Csv $Test3CSV -NoTypeInformation -Append
上面的代码产生了我想要的解决方案,但它似乎不必要地复杂。
下面是我在Test3.csv中的输出,这是我想要的:
"Lap","BeaconMarker"
"1","171.091"
"2","322.385"
"3","481.229"
"4","630.624"
"5","778.92"
1条答案
按热度按时间dffbzjpn1#
目前还不清楚为什么要阅读文件,然后存储更新后的版本,然后再读回来。你可以这样简化转换:
这也可以工作: