Переименовать заголовки столбцов в CSV-файле с помощью специальных символов - PullRequest
0 голосов
/ 09 мая 2018

Мои заголовки следующие:

Avis,N° Invent.,Cd.Srv.Cl.,Client Name

Я нашел этот код, чтобы изменить мои заголовки

Import-Csv "$treatmentfolder\data.csv" |
    Select-Object @{expression={$_.Avis}; label='avis'} |
    Export-Csv -NoTypeInformation "$treatmentfolder\data2.csv"

Как изменить имена заголовков, где символы являются пробелами, ., ° и т. Д .?

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Поскольку CSV - это просто текстовый файл, мы можем рассматривать это как замену строки в первой строке файла (элемент массива 0)

Этот параметр использует простое выражение регулярного выражения для удаления всего, что не является: 0-9 a-z A-Z , или (пробел), поэтому просто измените любые другие символы, которые вы хотите оставить в регулярное выражение. Это будет работать с любыми именами заголовков.

$content = Get-Content -Path "$treatmentfolder\data.csv"

$content[0] = $content[0] -replace '[^0-9a-zA-Z, ]'

Set-Content "$treatmentfolder\data.csv"

Другой вариант - объединить несколько replace в цепочку, это позволяет вам добавлять / удалять / изменять заголовки по своему усмотрению. Но, в отличие от описанного выше, он жестко закодирован для определенных имен заголовков, поэтому не так просто пропустить разные файлы.

$content[0] = $content[0] -replace 'N° Invent.','No_Invent' -replace 'Cd.Srv.Cl.','Cd-Srv-Cl'
0 голосов
/ 09 мая 2018

Чтобы выбрать и переименовать конкретное поле, введите имя поля, имя которого вы хотите изменить в кавычках:

... | Select-Object @{n='no_invent';e={$_.'N° Invent.'}}, ... | ...

Для замены определенного поля исключите исходное поле в дополнение к созданию переименованного поля:

... | Select-Object *,@{n='no_invent';e={$_.'N° Invent.'}} -Exclude 'N° Invent.' | ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...