Сценарий Powershell Удаляет нежелательные кавычки из файла CSV - PullRequest
0 голосов
/ 11 февраля 2020

Я хотел бы удалить ненужные кавычки из CSV-файла с помощью окна PowerShell. Пожалуйста, помогите мне в этом вопросе.

Ввод

"aaa", "CI "-" Work", "111111", 20200210, "aaa"

"bbb", "CI -" Work", "222222"", 20200210, "aaa"

"ccc"", "CI -' Work", "222222"", 20200210, "aaa"

Вывод

"aaa", "CI - Work", "111111", 20200210, "aaa"

"bbb", "CI - Work", "222222", 20200210, "aaa"

"ccc", "CI - Work", "222222", 20200210, "aaa"

Спасибо

Ответы [ 3 ]

1 голос
/ 11 февраля 2020

Обратите внимание, что export-csv в powershell 7 имеет параметр -UseQuotes.

0 голосов
/ 11 февраля 2020

Если предположить, что в ваших данных нет специальных символов или разделителей, я бы загрузил файл (Get-Content) и сначала удалил все кавычки, чем трубу что до ConvertFrom-Csv, чтобы заново вставить кавычки в правильные места и записать его в новый файл, используя Export-Csv:

Get-Content .\input.csv -Replace '"' | ConvertFrom-Csv | Export-Csv .\output.csv
0 голосов
/ 11 февраля 2020

Если $in содержит данные вашего файла, а данные, разделенные запятыми, не содержат запятых, вы можете сделать следующее:

$in -replace '"|''' -replace '^|$','"' -replace '(,\s*)','"$1"'

Если вы не хотите, чтобы запятые окружали все значения полей, вы можно сделать следующее:

$in | Foreach-Object {
    ($_ -split ',' -replace '(?<=^\s*)"|"(?=$)',';;;' -replace '"|''' -replace ';;;','"') -join ','
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...