如何检查制表符分隔文件中某列的值是否有效?
我有一个名为CHECKME的大文件,这个文件用制表符分隔,每一行有8列。第4列是整数。
请问,使用Perl或Python能否检查CHECKME中的每一行都有8列,并且第4列是一个整数呢?
6 个回答
4
这在Perl语言中非常简单:
perl -F\\t -ane'die"Invalid!"if@F!=8||$F[3]!~/^-?\d+$/' CHECKME
8
在Perl语言中
while(<>) {
my @F=split/\t/;
die "Invalid line: $_" if @F!=8 or $F[3]!~/^-?\d+$/;
}
5
在Python中:
def isfileok(filename):
f = open(filename)
for line in f:
pieces = line.split('\t')
if len(pieces) != 8:
return False
if not pieces[3].isdigit():
return False
return True
我猜你说的“第4列”是指第4个,所以用[3]
来表示,因为Python(和大多数计算机语言一样)是从0开始编号的。
这里我只是返回一个布尔值(对或错),但我把代码拆分开来,这样如果你想知道哪里出错了,能更容易地给出详细的诊断信息。