如何检查制表符分隔文件中某列的值是否有效?

1 投票
6 回答
1372 浏览
提问于 2025-04-15 15:06

我有一个名为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开始编号的。

这里我只是返回一个布尔值(对或错),但我把代码拆分开来,这样如果你想知道哪里出错了,能更容易地给出详细的诊断信息。

撰写回答