我有一个带有地址行的csv,其中一些有适当的数字,有些没有。我一直在使用PowerShell尝试将列分成两部分。一个是地址,一个是公寓。 所以初始列看起来像这样。
839 Main St Apt 3
130 Marcy Ave
399 Broadway Ave Apt 6F
结果我正在寻找
地址栏
839 Main St
130 Marcy Ave
399 Broadway Ave
公寓专栏
Apt 3 空格处 Apt 6F
我试图看看我怎么能分开这个。如果我使用空格作为分隔符,那么它会将adderess列拆分为多个列。如果我使用字母A,那么可能会留下pt 6F。解决这个问题的正确方法是什么。
非常感谢任何帮助。
答案 0 :(得分:2)
您可以使用:
$aptReg=[regex]'^(.*)(Apt.*)$'
"839 Main St Apt 3","130 Marcy Ave","399 Broadway Ave Apt 6F" | % {if($aptReg.IsMatch($_)){$a=$aptReg.Matches($_);[PSCustomObject]@{"A1"=$a.Groups[1].Value;"A2"=$a.Groups[2].Value}}else{[PSCustomObject]@{"A1"=$_;"A2"=""}}}
它给出了:
A1 A2
-- --
839 Main St Apt 3
130 Marcy Ave
399 Broadway Ave Apt 6F
给出以下CSV文件:
"Name","Surname","Address","Zipcode"
"N1","S1","839 Main St Apt 3","Z1"
"N2","S2","130 Marcy Ave","Z2"
"N2","S2","399 Broadway Ave Apt 6F","Z2"
很长的一个班轮......
Import-Csv C:\ Temp \ test.csv | %{if($ aptReg.IsMatch($ .Address)){$ a = $ aptReg.Matches($ .address); $ a1 = $ a.Groups [1] .Value; $ a2 = $ a.Groups [2] .Value} else {$ a1 = $ .address; $ a2 =""}; Add-Member -InputObject $ -MemberType NoteProperty - 姓名" A1" -Value $ a1; Add-Member -InputObject $ _ -MemberType NoteProperty -Name" A2" -Value $ a2; $ _} | Export-Csv" C:\ Temp \ test Bis.csv"