分隔文本记录的垂直视图

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java有没有办法使多个对象初始化更紧凑?   java确保BUnit包和测试包不包含在生产代码中   java如何使JTextField更小,而不是填满整个空间?   javaawt的矩形交点   用户连续登录应用程序的java条纹(Android)   maven如何在服务器上运行java项目,并将其作为jar添加到EAR项目中   java如何在jar/war的资源文件夹中创建png?   swing在Java中未选择列表项时禁用按钮   java GridView x BaseAdapter并在onItemClick中重新加载   java Apache POI未应用某些颜色索引   java创建URL使用uri有什么区别。解析/uri。生成器/连接字符串?   java JavaFX jfoenix运行时错误(JFXDatePicker)   右旋转二叉搜索树   在Java标准版中运行Java移动应用程序   java为什么要为每个实例创建静态hashmap?   java如何使用RTC唤醒和报警意图   java获取对象中的JSON表达式   (Java)服务器不接受多个连接   java为什么我的目的地为null?   java使用多个参数执行存储过程,并使用spring数据jpa将结果集映射到非实体类