天天看点

perl转python_将行转换为perl或python中的列

我认为你可以用一张桌子做好,所以我会告诉你如何做你要求的和我认为好的。

$name = "";

$data = {};

open(IN, "build.txt");

foreach my $line (){

if($line =~ /Re: (.*)\n/) { # get building name

$name = $1;

$name =~ s/ /_/;

$data->{$name} = []; # link to empty array

} else {

# make a new list and return to a list

@{$data->{$name}} = (@{$data->{$name}}, $line); # add line to current building data

}

}

close IN;

#

# write on file for each

#

foreach my $name (keys %{$data}){

open(OUT, ">$name.txt");

foreach my $line (@{$data->{$name}}){

print OUT $line;

}

close OUT;

}

#

# or write into one file as a table

#

open(OUT, ">tabledata.txt");

foreach my $name (keys %{$data}){

# because the data was not filtered on import we filter it now

my $flag = 0;

my @data;

foreach my $line (@{$data->{$name}}){

if($line =~ /kWh/) {

$flag = 1;

} elsif($line =~ /^\n$/){ # skip blanks

} elsif($flag == 1) { # skip the counters

$flag++;

} elsif($flag > 1) {

chomp($line);

@data = (@data, $line);

$flag = 1;

}

}

# print pretty rows

my $format = "%20s" . ("%10d" x @data);

print OUT sprintf($format, $name, @data) . "\n";

}

close OUT;这使得每个建筑物的文件具有建筑物名称。 Building_A.txt的一个例子是:

Month

kWh

1

100

2

110

3

105表文件名为tabledata.txt,如下所示:

Building_A 100 110 105

Building_B 200 210 205