【发布时间】:2018-03-18 14:44:32
【问题描述】:
尝试遍历一行,检索 zip,将其拆分为 ' ',并使用邮政编码为每个邮政编码创建一个新的 PSCustomObject,并将邮政编码放在同一个 csv 中具有新行的列中。
样本(是,引擎盖 = 无价值)
城市,州,引擎盖,邮编,纬度,液化天然气 卡梅尔,印第安纳州,,"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。我觉得更正很简单,但我看不到。正在寻找结果文件...
城市,州,引擎盖,邮编,纬度,液化天然气 卡梅尔,印第安纳州,,"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 '"',''}
结果是
城市,州,引擎盖,邮编,纬度,液化天然气 卡梅尔,印第安纳州,,"46290 46032 46033 46280 46082",39.9783711,-86.1180435 ,,,"46290",, ,,,"46032",, ,,,"46033",, ,,,"46280",, ,,,"46082",,我将在另一个脚本中处理额外的“”
| % { $_ -replace '"',''} 似乎没有删除它们
感谢所有建议
【问题讨论】:
-
你的终极愿望是什么。您显示为所需输出的那个文件虽然在技术上是正确的 CSV,但我怀疑它不是处理数据的最佳方式。我怀疑 XML、JSON 或其他一些结构化数据存储方法会更好
-
哦,该数据犯了大罪:在单个列中存储多个值。
-
@EBGreen 虽然这可能是正确的,但本周是我第一次尝试任何类型的脚本(除了使用我大约 3 年前停止使用的 iMacros),在 Fiverr 的一位“专家”接受了一周终于放弃说他无法为我做我的项目。这是我必须编写的 5 个脚本中的第二个。希望数据最终能够进入 MySQL,我也可以学习使用该工具。
-
@Joel Coehoorn 大声笑...好吧..我的借口是我必须按照我找到的方式使用数据并从那里谨慎行事;-)
-
请不要将答案编辑成问题。
标签: powershell csv