我需要以这种格式转换 .txt 文件的一部分(首先通过匹配“SchDay”)
<SchDay>
<Name>School Occup WD</Name>
<Type>Fraction</Type>
<Hr index="0">0</Hr>
<Hr index="1">0</Hr>
<Hr index="2">0</Hr>
<Hr index="3">0</Hr>
<Hr index="4">0</Hr>
<Hr index="5">0</Hr>
<Hr index="6">0</Hr>
<Hr index="7">0.05</Hr>
<Hr index="8">0.75</Hr>
....
看起来像这样(值是第一位的,“步骤”只需要定义 2 个末端):
0.00, 0.00,
0.00, 6.00, <- end of step
0.05, 7.00,
0.75, 8.00,
...
ETC
这是我到目前为止所拥有的:
open (OUTFILE, ">C:/begperl/parts/all1.txt")|| die "Can't open it";
my @files = glob ("*.txt");
for (@files) {
open (INFILE, $_) || die "can't open infile";
@lines = <INFILE>;
my %answer;
$regex = '<SchDay';
for my $idx (0..$#lines) {
if ($lines[$idx] =~ /$regex/) {
for $ii (($idx + 3)..($idx + 26)){
{$answer{$ii} = ($lines[$ii]);}
}
}
foreach $key (sort keys %answer) { print OUTFILE "$answer{$key}\n" }
}
close (INFILE);}
所以我有我想要的线条。现在我只需要提取数字,包括小数点,然后删除具有相同值的连续小时。