Дополнительный символ в строке - PullRequest
0 голосов
/ 23 января 2019

Почему этот код помещает [] или аналогичный код во второй столбец внизу полученного результата?

$objs = @();
$output = Import-Csv -Path "c:\users\patrick\desktop\RelayGroups\file2concatenate.csv" | ForEach {
    $Object = New-Object PSObject -Property @{           
        unique_sis_group_id  = [String]::Concat($_.unique_sis_group_id, $_.course)
        group_name           = $_.section
        unique_sis_user_id   = $_.unique_sis_user_id
        unique_sis_school_id = $_.unique_sis_school_id 
    }
    $objs += $Object;
}
$objs
$objs | Export-Csv -NoTypeInformation c:\users\patrick\desktop\RelayGroups\groups.csv

enter image description here

1 Ответ

0 голосов
/ 24 января 2019

Вы получаете символ на выходе, потому что ваш CSV-файл содержит символ Unicode, который [String]::Concat() объединяется и включается в свойство unique_sis_group_id.

Мне нравится использовать Notepad ++ для просмотра (и при необходимости очистки) моих плоских файлов перед их импортом. Откройте файл в Notepad ++ и откройте меню «Кодировка». Мой CSV-файл закодирован в UTF-8, и я вставил символ Unicode (в данном примере U + 08FE)

Notepad++ encoding menu

Когда я запускаю PowerShell, я вижу символ Unicode после *Pre-Calculus Algebra (W)

enter image description here

Вы можете просто удалить символ в Notepad ++ и запустить Powershell, или если вы обнаружите, что источник этого CSV последовательно вставляет этот специальный символ каждый раз, когда он генерирует .csv, тогда вы можете использовать -replace для удаления символа из ваш файл перед вами Import-Csv Хороший пример того, как это сделать, можно найти в блоге LazyWinAdmin здесь .

...