csvkit 包是一组基于 Python 的工具,用于处理 CSV 文件:修复和清理、不同分隔和引用之间的转换、grep,甚至查询数据。
如果我们想从 CSV 文件中删除标题行:
csvformat -K 1 data.csv > out.csv
我们可以使用 -K 2 删除前两行,或使用任何数字删除前 N 行。
插入标题行的快速方法是使用 --no-header-row 选项。这将插入一个模拟标题,其中包含名为“a,b,c…”的列:
要从 CSV 文件中删除列:
csvcut -C 3,4 data.csv > out.csv
如果我们只想保留特定列,同时删除其他所有内容,我们可以使用:
csvcut -c 1,2,5 data.csv > out.csv
要将 CSV 转换为制表符分隔 (TSV) 文件
csvformat -D ";" data.csv
id;name;price
1;Phone;123
7;
2;TV, Screens;34
3;Boot;5
要将 CSV 转换为制表符分隔 (TSV) 文件:
csvformat -T data.csv
id name price
1 Phone 123
7
2 TV, Screens 34
3 Boot 5
我们可以为 CSV 使用自定义引用符号:
csvformat -Q "'" data.csv
id,name,price
1,Phone,123
7,
2,‘TV, Screens’,34
3,Boot,5
在许多情况下,我们必须处理损坏的 CSV 文件。我们可以从 CSV 文件中过滤掉无效记录:
csvclean data.csv
该工具将创建 2 个文件:
data_err.csv
data_out.csv
现在我们可以分析 data_err.csv 文件中的所有错误:
cat data_err.csv
line_number,msg,id,name,price
2,“Expected 3 columns, found 2 columns”,7,
3,“Expected 3 columns, found 4 columns”,2,TV, Screens,34
csvkit 中的所有工具都支持 gzip 压缩,因此我们不需要解压缩:
csvformat compressed.csv.gz
我们还可以将 CSV 数据直接传输到 csvkit 命令,这使得动态处理其他程序的 CSV 输出非常有用:
echo '1,2,3,"hi"' | csvformat
1,2,3,hi