尝试迭代一行,检索拉链,将其拆分为''并使用zipcodes为每个创建一个新的PSCustomObject,并将zipcode放在列中,并在同一个csv中添加新行。
示例(是的,引擎盖=无值)
City,State,hood,zip,lat,lng Carmel,IN,,"46290 46032 46033 46280 46082",39.9783711,-86.1180435
我的非工作解决方案是对链接中的解决方案的修改
$x = Get-Content 'D:\Carmel-IN.csv'
$y = $x | ConvertFrom-Csv -Delimiter ' '
$y | Foreach {
$current = $_
$current.zip -split ' ' | foreach {
[PSCUstomObject]@{
zip = $_
}
}
} | ConvertTo-Csv -NoTypeInformation -Delimiter ' ' | % {
$_ -replace '"',''
}
ISE和控制台上的输出相同......单词zip
并且没有任何内容写入文件。
我是PS的新手,使用5.1。我有一种感觉,校正非常简单,但我无法看到它。正在寻找结果文件...
City,State,hood,zip,lat,lng Carmel,IN,,"46290 46032 46033 46280 46082",39.9783711,-86.1180435 ,,,46290,, ,,,46032,, ,,,46033,, ,,,46280,, ,,,46082,,
更新
我设法重做脚本以获得我可以使用的结果
$x = Get-Content 'D:\temp\Carmel-IN.csv'
$exportlocation = 'D:\temp\Carmel-IN.csv'
$y = $x | ConvertFrom-Csv -Delimiter ','
$y | Foreach {
$current = $_
$current.zip -split ' ' | foreach {
[PSCUstomObject]@{
City = $null
State = $null
hood = $null
zip = $_
lat = $null
lng = $null
}
}
} | Export-CSV -Append -NoTypeInformation -Delimiter ',' -Force $exportlocation | % { $_ -replace '"',''}
,结果是
City,State,hood,zip,lat,lng Carmel,IN,,"46290 46032 46033 46280 46082",39.9783711,-86.1180435 ,,,"46290",, ,,,"46032",, ,,,"46033",, ,,,"46280",, ,,,"46082",,
我将关注另一个剧本中的额外“
| % { $_ -replace '"',''}
似乎没有删除它们
感谢所有建议
答案 0 :(得分:0)
使用Select-Object
:
$x = Get-Content 'D:\Carmel-IN.csv'
$y = $x | ConvertFrom-Csv -Delimiter ' '
foreach($row in $y){
foreach($zip in -split $row.zip){
$row |select *,@{Name='zip';Expression={$zip}} -ExcludeProperty zip
}
}
或者,如果要保留列的顺序,请设置要在循环之前选择的属性的属性列表:
$columns = $y[0].psobject.Properties.Name |ForEach-Object {
if($_ -eq 'zip'){
$_ = @{Name = 'zip';Expression = { -split $zip }}
}
$_
}
foreach($row in $y){
foreach($zip in -split $row.Zip){
$row |select $columns
}
}