2013-06-19 16 views
5

Ho bisogno di eseguire un metodo trim su ogni valore estratto dall'oggetto di importazione csv. non ho provato qualcosa di simile al di sotto, ma per me non voglio dover definire un comando di assetto alla fine di ciascuna delle mie variabili passate alle funzioni.contenuto oggetto ritaglio in importazione csv

$csvobj = "c:\somestuff.csv" 

foreach ($csvitem in $csvobj) { 
$csvitem.value1.trim() 
$csvitem.value2.trim() 
} 

Grazie in anticipo, SS

risposta

7

Questo riduce tutti i valori nel file csv e assegna il risultato a $ csv.

$csv = Import-Csv c:\somestuff.csv | Foreach-Object { 
    $_.PSObject.Properties | Foreach-Object {$_.Value = $_.Value.Trim()} 
} 
+0

I @Shay Levy Perché metti di nuovo la stessa risposta? ; o) – JPBlanc

+0

In non pensare che sia lo stesso. Non ho messo alla prova la tua risposta, ma ti ho complicato troppo. –

+0

grazie a entrambi. sebbene entrambi abbiano una sintassi simile, i metodi di stenografia della formattazione differiscono tra loro. – ssaviers

1

si può provare questo:

$a = import-csv "c:\somestuff.csv" 
$a | % {$b=$_;$_.psobject.Properties | % {$c=$_.name ;$b."$c"=($b."$c").trim()}} 

Prima: ho importare tutte le linee in $a.

Secondo: In un primo ciclo ho letto ogni oggetto (ogni riga CSV), quindi per ogni oggetto in un secondo ciclo ho letto ogni proprietà, quindi posso tagliare ogni var.

0

Ecco una piccola modifica della risposta sopra accettata. Ciò elimina tutti gli spazi iniziali/di coda da tutti i file .csv nella cartella corrente. Spero che sia d'aiuto!

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 
} 
Problemi correlati