分隔文本记录的垂直视图
csvchk的Python项目详细描述
csvchk
检查分隔文本文件的一条记录
此程序将向您显示垂直转置的分隔文本文件的第一条记录。
它旨在补充csvkit
工具的许多功能。
例如,给定这样的文件:
$ csvlook test/test.csv
| id | val |
| -- | --- |
| 1 | foo |
| 2 | bar |
该程序将显示:
^{pr2}$使用和选项
使用-h
或--help
运行以获得完整的用法:
usage: csvchk.py [-h] [-s sep] [-f names] [-l nrecs] [-g grep] [-d] [-n] [-N]
[-e encode] [--version]
FILE [FILE ...]
Check a delimited text file
positional arguments:
FILE Input file(s)
optional arguments:
-h, --help show this help message and exit
-s sep, --sep sep Field separator (default: )
-f names, --fieldnames names
Field names (no header) (default: )
-l nrecs, --limit nrecs
How many records to show (default: 1)
-g grep, --grep grep Only show records with a given value (default: )
-d, --dense Not sparse (skip empty fields) (default: False)
-n, --number Show field number (e.g., for awk) (default: False)
-N, --noheaders No headers in first row (default: False)
-e encode, --encoding encode
File encoding (default: utf-8)
--version show program's version number and exit
分离器
默认的字段分隔符是制表符,除非输入文件的扩展名为.csv
。
您可以使用-s
或--sep
选项更改此值。在
例如,给定此文件:
$ cat test/test2.txt
id:val
1:foo
2:bar
你可以跑:
$ csvchk -s ':' test/test2.txt
// ****** Record 1 ****** //
id : 1
val : foo
字段名称
假定输入文件在第一行中包含列标题/字段名。
如果一个文件没有这样的头,您可以提供一个逗号分隔的字符串,其中包含-f
或{
例如,给定此文件:
$ cat test/nohdr.csv
1,foo
2,bar
您可以运行:
$ csvchk -f 'id, value' test/nohdr.csv
// ****** Record 1 ****** //
id : 1
value : foo
限制
默认情况下,程序将使用-l
或--limit
值来显示第一条记录。
您可以增加此值,例如:
$ csvchk -l 2 test/test.csv
// ****** Record 1 ****** //
id : 1
val : foo
// ****** Record 2 ****** //
id : 2
val : bar
要查看all记录,请使用一个负值,如-1
:
$ csvchk -l -1 test/test.csv
// ****** Record 1 ****** //
id : 1
val : foo
// ****** Record 2 ****** //
id : 2
val : bar
// ****** Record 3 ****** //
id : 3
val : baz
密集输出
默认情况下,将为每个记录显示所有字段和值。 例如,给定此文件:
$ cat test/sparse.csv
id,val
1,foo
2,
,baz
这将显示:
$ csvchk test/sparse.csv -l -1
// ****** Record 1 ****** //
id : 1
val : foo
// ****** Record 2 ****** //
id : 2
val :
// ****** Record 3 ****** //
id :
val : baz
您可以使用-d
或--dense
选项忽略没有值的字段:
$ csvchk test/sparse.csv -l -1 -d
// ****** Record 1 ****** //
id : 1
val : foo
// ****** Record 2 ****** //
id : 2
// ****** Record 3 ****** //
val : baz
编号字段
-n
或--number
选项将在输出之前附加字段号:
$ csvchk -n test/test.tab
// ****** Record 1 ****** //
1 id : 1
2 val : foo
如果您想知道要与awk
一起使用的字段号,那么这很有用,例如,我们可以查找val
列(在第二个位置)具有“a”的记录:
$ awk '$2 ~ /a/' test/test.tab
id val
2 bar
没有标题
如果输入文件的第一行没有标题(列名),可以使用-N
或--noheaders
选项让程序创建名称,如“Field1”、“Field2”等:
$ csvchk -N test/nohdr.csv
// ****** Record 1 ****** //
Field1 : 1
Field2 : foo
按记录内容筛选
您可以使用-g
或--grep
选项仅查看包含字符串的记录:
$ csvchk -g ba -l 2 tests/test.csv
// ****** Record 1 ****** //
id : 2
val : bar
// ****** Record 2 ****** //
id : 3
val : baz
多个文件输入
如果给定多个文件作为输入,程序将插入一个标头,指出每个文件的基名称:
$ csvchk test/test.csv test/test.tab
==> test.csv <==
// ****** Record 1 ****** //
id : 1
val : foo
==> test.tab <==
// ****** Record 1 ****** //
id : 1
val : foo
作者
肯·尤恩斯·克拉克kyclark@gmail.com
- 项目
标签: