Удалить значения из строк в определенных столбцах в файле csv

В настоящее время я пытаюсь удалить определенные значения из строк в определенных столбцах в CSV-файле.

Как лучше всего это сделать?

Нужно ли использовать файл карты XSLT в коде или делать это только с помощью кода? (Используя С#)

Я хочу сделать следующее:

ПЕРЕД МАНИПУЛЯЦИЕЙ:

 id, name, email, phoneNumber, dob 
 1,John Doe,[email protected],123456789,1988-08-08
 2,Jane Doe,[email protected],987654321,1987-07-07

ПОСЛЕ МАНИПУЛЯЦИИ:

 id, name, email, phoneNumber, dob 
 1,John Doe,,,1988-08-08 
 2,Jane Doe,,,1987-07-07

Как вы можете видеть, «электронная почта» и «номер телефона» исчезли.


person John    schedule 04.12.2018    source источник
comment
Пожалуйста, отредактируйте свой вопрос и покажите нам код, с которым вы сейчас работаете, и опишите любые проблемы, которые у вас возникают с этим кодом.   -  person DaImTo    schedule 04.12.2018
comment
XSLT действительно предназначен для преобразования XML-файлов. Хотя обработка файлов CSV не является невозможной, вам действительно лучше делать это с помощью кода. См. stackoverflow.com/questions/3507498/ для одного примера.   -  person Tim C    schedule 04.12.2018
comment
Это не сложно, поэтому я бы сделал с кодом. Может быть какой-то инструмент, который позволит вам сделать это с меньшим количеством кода, но время, затрачиваемое на его изучение, лишает вас каких-либо преимуществ (и будущий сопровождающий, вероятно, перепишет его с нуля). Просто прочитайте файл в набор переменных, по одной строке за раз. Очистите все переменные, которые вы хотите, и запишите их в новый файл.   -  person Robin Bennett    schedule 04.12.2018


Ответы (2)


Вы можете использовать С# без каких-либо библиотек для разделения и объединения строк csv. это проще, чем использовать XLST. В качестве образца:

 String csv = "1,John Doe,[email protected],123456789,1988-08-08";
 String[] csvList = csv.Split(',');
 csvList[2] = "";
 csvList[3] = "";
 csv = String.Join(",", csvList);
person sergey p    schedule 04.12.2018
comment
Это было именно то, что я искал. Спасибо! - person John; 05.12.2018

Наилучший способ очень сильно зависит от личных предпочтений. Для меня лучшим способом было бы использовать sed. Предполагая, что ваши данные находятся в файле data.csv:

cat data.csv | sed '2,$ s/\([^,]*\),\(.[^,]*\),\(.[^,]*\),\([^,]*\),\([^,]*\)/\1,\2,,,\5/' > output.csv
person helcim    schedule 04.12.2018