尽管这很基础,但我找不到类似的问题,如果您知道SO上现有的问题/解决方案,请链接到其中一个。
我有一个大约2MB,大约有16,000行的.txt文件。每个记录长度为160个字符,阻止因子为10。这是一种旧的数据结构,几乎看起来像一个制表符分隔的文件,但分隔是通过单个字符/空格进行的。
首先,我使用glob在目录中获取.txt文件 - 该目录中从不同时存在多个文件,因此这个尝试本身可能效率低下。
然后,我使用以下代码打开该文件:
根据该文件的数据字典,我正在使用Perl的
这种方法需要处理每一行的时间较长,我想知道是否有更有效的方法来获取文件中每一行的每个字段。是否有人可以建议更高效/首选的方法?
我有一个大约2MB,大约有16,000行的.txt文件。每个记录长度为160个字符,阻止因子为10。这是一种旧的数据结构,几乎看起来像一个制表符分隔的文件,但分隔是通过单个字符/空格进行的。
首先,我使用glob在目录中获取.txt文件 - 该目录中从不同时存在多个文件,因此这个尝试本身可能效率低下。
my $txt_file = glob "/some/cheese/dir/*.txt";
然后,我使用以下代码打开该文件:
open (F, $txt_file) || die ("Could not open $txt_file");
根据该文件的数据字典,我正在使用Perl的
substr()
函数在while循环中解析每行中的每个“字段”。while ($line = <F>)
{
$nom_stat = substr($line,0,1);
$lname = substr($line,1,15);
$fname = substr($line,16,15);
$mname = substr($line,31,1);
$address = substr($line,32,30);
$city = substr($line,62,20);
$st = substr($line,82,2);
$zip = substr($line,84,5);
$lnum = substr($line,93,9);
$cl_rank = substr($line,108,4);
$ceeb = substr($line,112,6);
$county = substr($line,118,2);
$sex = substr($line,120,1);
$grant_type = substr($line,121,1);
$int_major = substr($line,122,3);
$acad_idx = substr($line,125,3);
$gpa = substr($line,128,5);
$hs_cl_size = substr($line,135,4);
}
这种方法需要处理每一行的时间较长,我想知道是否有更有效的方法来获取文件中每一行的每个字段。是否有人可以建议更高效/首选的方法?