我需要对从csv导入对象中提取的每个值运行trim方法。没有尝试类似下面的东西,但对我来说,我不想在传递给函数的每个变量的末尾定义一个trim命令。
$csvobj = "c:\somestuff.csv"
foreach ($csvitem in $csvobj) {
$csvitem.value1.trim()
$csvitem.value2.trim()
}
先谢谢,SS
答案 0 :(得分:8)
这将修剪csv文件中的所有值,并将结果分配给$ csv。
$csv = Import-Csv c:\somestuff.csv | Foreach-Object {
$_.PSObject.Properties | Foreach-Object {$_.Value = $_.Value.Trim()}
}
答案 1 :(得分:1)
你可以试试这个:
$a = import-csv "c:\somestuff.csv"
$a | % {$b=$_;$_.psobject.Properties | % {$c=$_.name ;$b."$c"=($b."$c").trim()}}
首先:我将所有行导入$a
。
第二:在第一个循环中,我读取每个对象(每个CSV行),然后对于第二个循环中的每个对象,我读取每个属性,然后我可以修剪每个var。
答案 2 :(得分:1)
以上是对上述答案的略微修改。这将从当前文件夹中的所有.csv文件中删除所有前导/尾随空格。希望它有所帮助!
gci -filter *.csv | foreach {
echo $_.NAME
$csv = Import-Csv $_.NAME
$csv | Foreach-Object {
$_.PSObject.Properties | Foreach-Object { $_.Value = $_.Value.Trim() }
}
$csv | Export-Csv $_.NAME -NoTypeInformation
}