Как «вырезать» (извлечь подмножество столбцов) CSV-файл, содержащий строки в кавычках`

3607
yankee

У меня есть файл CSV и я хочу отбросить пару столбцов. Допустим, это пример файла:

column a, column b, column c value a, value b, value c value a, "quoted, b", value c 

А теперь допустим, что мы хотим отбросить столбец b, чтобы получить результат:

column a, column c value a, value c value a, value c 

Если бы не было строки в кавычках "quoated, b", я мог бы сделать это с cut:

cut -d ',' -f 1,3 

Однако есть эта строка в кавычках. Я мог бы просто загрузить файл с помощью libreoffice, но помимо того, что он менее крут и автоматизирован, мои файлы занимают несколько килобайт, а некоторые даже превышают максимальное количество строк для LibreOffice Calc.

(Примечание: мои настоящие файлы имеют более 30 столбцов, и я хотел бы выбрать около 5-10 столбцов из них. Так что это не похоже на «отбросить последний столбец»)

2

1 ответ на вопрос

3
jehad

Если вы можете установить python и easy_install, то вы также можете установить csvkit : https://csvkit.readthedocs.io

И теперь вы можете запустить простую команду, подобную следующей, чтобы выбрать только столбцы 1 и 3:

csvcut -c 1,3 original_file.csv > new_file.csv 

Или, другой пример, чтобы удалить второй столбец:

csvcut -C 2 original_file.csv > new_file.csv 

..

НОТА:

Просто предупреждение, ваш CSV выглядит недействительным . Если вы не хотите использовать пробел в своих данных, вы НЕ ДОЛЖНЫ использовать пробел после запятой / разделителя. Символ пробела просто будет частью данных и может испортить цитируемый текст.

Как генерируются эти данные? Может ли он быть создан без лишних пробелов? Напримерcolumn a,column b,column c

В Ubuntu PPA не требуется: sudo apt install python3-csvkit. Pablo Bianchi 5 лет назад 0

Похожие вопросы