命令行工具初用
csvkit 包是一组基于 Python 的工具,用于处理 CSV 文件:修复和清理、不同分隔和引用之间的转换、grep,甚至查询数据。
删除 CSV 标头
如果我们想从 CSV 文件中删除标题行:
csvformat -K 1 data.csv > out.csv
我们可以使用 -K 2 删除前两行,或使用任何数字删除前 N 行。
将标题行添加到 CSV
插入标题行的快速方法是使用 --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 分隔符
要将 CSV 转换为制表符分隔 (TSV) 文件
csvformat -D ";" data.csv
id;name;price 1;Phone;123 7; 2;TV, Screens;34 3;Boot;5
将逗号更改为制表符作为 CSV 分隔符
要将 CSV 转换为制表符分隔 (TSV) 文件:
csvformat -T data.csv
id name price 1 Phone 123 7 2 TV, Screens 34 3 Boot 5
更改 CSV 引用
我们可以为 CSV 使用自定义引用符号:
csvformat -Q "'" data.csv
id,name,price 1,Phone,123 7, 2,'TV, Screens',34 3,Boot,5
清理无效的 CSV 行
在许多情况下,我们必须处理损坏的 CSV 文件。我们可以从 CSV 文件中过滤掉无效记录:
该工具将创建 2 个文件:
data_err.csv
data_out.csv
现在我们可以分析 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
使用压缩的 CSV 文件
csvkit 中的所有工具都支持 gzip 压缩,因此我们不需要解压缩:
csvformat compressed.csv.gz
传输 CSV 数据
我们还可以将 CSV 数据直接传输到 csvkit 命令,这使得动态处理其他程序的 CSV 输出非常有用:
echo '1,2,3,"hi"' | csvformat
1,2,3,hi
终端分析统计数据