分隔文本记录的垂直视图

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何时可以运行。toString()是否有可能返回重复的字符串?   使用REST进行Java应用程序登录验证?   java测试onErrorResume()Spring Webflux   java设置一个单元格样式,使数字显示为百分比ApachePOI   java仅替换regex az09   java将字符串附加到文件   java Hibernate:如何在集合中查找对象   当独立客户端为Web服务实例化代理时,java WebSphere会生成ClassNotFoundException   java简单算法。我做不好   java我的代码有什么问题?我想用Android制作一个“cardflip”动画   java如何模拟Springbean及其自动连接的参数?   java在Android中将arraylist对象的某些参数显示到列表视图中   java setOnclickListener(此)错误   java自动连接未按类型连接bean   java如何禁止在Viewpager上滑动?   java代码检查每个if语句吗?   java NIO选择器OP_READ和OP_WRITE,关于处理它们的一些问题   java如何在不锁定文件的情况下获取文件大小   Oculus Rift的Java API?   java是一种选择。仍然需要fork来设置bootClasspath