1111, test2, test3, test4
111, test2, test3, test4
11, test 2, test 3, test 4
I would like to read the CSV file like the one above and erase the half-width space as shown below.
1111, test2, test3, test4
111, test2, test3, test4
11, test 2, test 3, test 4
In order to trim the half-width space of each CSV element, I wrote the following code in Powershell, but the CSV output is $results
length.
Is there a solution?
$clms=@("col1", "col2", "col3", "col4");
$products=Import-Csv'C:\test\input.csv'-Header $clms-Encoding Default
$results=@()
foreach($product in $products){
$line=@()
foreach($clmin$clms){
$line+=$product.$clm.Trim()
}
$results+=$line
}
$results | Export-Csv-Encoding Default-NoTypeInformation 'C:\test\output.csv'
I think you can change the data you read and save it.
$clms=@("col1", "col2", "col3", "col4");
$products=Import-Csv'input.csv'-Header $clms-Encoding Default
$results=@()
foreach($product in $products){
foreach($clmin$clms){
$product.$clm=$product.$clm.Trim()
}
}
$products | Export-Csv-Encoding Default-NoTypeInformation 'output.csv'
input.csv
1111, test2, test3, test4
111, test2, test3, test4
11, test 2, test 3, test 4
output.csv
"col1", "col2", "col3", "col4"
"1111", "test2", "test3", "test4"
"111", "test2", "test3", "test4"
"11", "test2", "test3", "test4"
This article seems to be related to $results
length.
Export-Csv
seems to output different data.
Export-CSV exports length but not name
Export-Csv
exports a table of object properties and their values.Since your script is producing string objects, and the only property they have is length, that's what you got.
If you just want to save the list, use Out-File
or Set-Content
installed of Export-Csv
.
Export-Csv exports a table of object properties and their values. Scripts generate string objects, and the only property they have is length, so you get it.
If you only want to save the list, use Out-File or Set-Content instead of Export-Csv.
Then $line+=$product.$clm.Trim()
or $results+=$line
processing separates each column of data in one row and divides it into one row of data.
When $results+=$line
, you will need to use about_Join to concatenate with commas.
As a countermeasure, change the two lines as follows: ###
comments are the changes.
$clms=@("col1", "col2", "col3", "col4");
$products=Import-Csv'C:\test\input.csv'-Header $clms-Encoding Default
$results=@()
foreach($product in $products){
$line=@()
foreach($clmin$clms){
$line+=$product.$clm.Trim()
}
$results+=$line-join', '#### If you don't connect, everything will be stored in separate lines
}
$results | Out-File-Encoding Default 'C:\test\output.csv'###Out-File instead of Export-Csv
I was wondering if it should be treated as a CSV.Can't I just treat it as a text file and delete the blanks before ,
?
Get-Content C:\test\input.csv-Encoding Default|
ForEach-Object {$_-replace',',',','} |
Set-Content C:\test\output.csv-Encoding Default
© 2024 OneMinuteCode. All rights reserved.