2013-06-19 34 views
5

Tôi cần chạy phương pháp cắt trên mỗi giá trị được trích xuất từ ​​đối tượng nhập csv. đã không thử một cái gì đó như dưới đây, nhưng đối với tôi tôi không muốn phải xác định một lệnh cắt ở phần cuối của mỗi một trong các biến của tôi được chuyển đến chức năng.cắt nội dung đối tượng trong nhập csv

$csvobj = "c:\somestuff.csv" 

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

Cảm ơn trước, SS

Trả lời

7

Điều này sẽ cắt tất cả các giá trị trong tệp csv và gán kết quả cho $ csv.

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

Tôi @Shay Levy Tại sao bạn lại đặt cùng một câu trả lời? ; o) – JPBlanc

+0

Không nghĩ nó giống nhau. Tôi đã không kiểm tra câu trả lời của bạn nhưng imo bạn phức tạp hơn nó. –

+0

cảm ơn cả hai. mặc dù cả hai đều có cú pháp tương tự nhưng các phương pháp viết tắt định dạng khác nhau ở mỗi phương thức. – ssaviers

1

Bạn có thể thử này:

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

Đầu tiên: Tôi nhập khẩu tất cả các dòng vào $a.

Thứ hai: Trong vòng đầu tiên tôi đọc từng đối tượng (mỗi dòng CSV), sau đó cho mỗi đối tượng trong vòng lặp thứ hai tôi đọc từng thuộc tính, sau đó tôi có thể cắt từng var.

0

Đây là một sửa đổi nhỏ của câu trả lời được chấp nhận ở trên. Thao tác này sẽ xóa tất cả các khoảng trắng đầu/đuôi khỏi tất cả các tệp .csv trong thư mục hiện tại. Hy vọng nó giúp!

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 
} 
Các vấn đề liên quan