Perl скрипт для распечатки модели и цвета машины - PullRequest
1 голос
/ 16 июня 2010

Я пытаюсь создать Perl-скрипт для распечатки моделей автомобилей и цветов, а данные приведены ниже.Я хочу знать, есть ли способ заставить модель автомобиля возглавлять поле, чтобы я мог напечатать ее в любое время?данные ниже представляют собой CSV-файл.Я хочу, чтобы и данные в отчете выглядели ниже

******** Вот как выглядят данные ********

Chevy
blue,1978,Washington 
brown,1989,Dallas
black,2001,Queens
white,2003,Manhattan

Toyota
red,2003,Bronx
green,2004,Queens
brown,2002,Brooklyn
black,1999,Harlem

*********** Вот так я пытаюсь заставить данные выглядеть в отчете ***********

Модель автомобиля: Toyota

Цвет: Красный Год: 2002 Город: Queens

Ответы [ 4 ]

4 голосов
/ 16 июня 2010
open my $fh, '<', 'filename' or die $!;

while (<$fh>) {
    next if /^\s*$/;
    my @fields = split /,/, $_;
    print("Car Model: $fields[0]\n"), next if @fields == 1;

    my %data;
    @data{qw( color year city )} = @fields;
    print "Color:$data{color} Year:$data{year} City:$data{city}\n";
}
1 голос
/ 16 июня 2010

Вы можете читать в файлах CSV с помощью Text :: CSV . Этот модуль будет перехватывать все крайние случаи, которые вы, вероятно, пропустите в своей собственной реализации.

Проверьте perldoc perldsc и perldoc perldata для получения справки по структурам данных perl.

1 голос
/ 16 июня 2010
open IN, "< somefile";
while (<IN>) {
  chomp;
  if (m/,/) {
    @temp = split /,/, $_;
    printf "Car model: %s\nColor: %s\nYear: %s\nCity: %s\n\n", $make, @temp;
  } else {
    $make = $_;
  }  
}
0 голосов
/ 16 июня 2010

Я бы просматривал файл построчно и для каждой строки (псевдокод, не тестировался):

if ($line ~= /\w+,\d+,\w+/) { # matches the lines with the information
    my $array = split $line at , 
    print to file array[0] + "," + array[1] + "," + array[2] + "\n"
} elsif ($line ~= /\w+/) { # matches the car model since the information was already matched
    print "Car Model:" + $line + "\n"
} else {   # must be the whitespace so you know the information about the car is done
    print "\n" # to separate the car information
}

Если в вашем CSV-файле нет пустой строки, выполнитеНовая строка для разделения моделей автомобилей в других местах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...