2014/07/08

4th JML Int'l Competition: 参加者の国籍割合

第4回ジャン=マリー・ロンデックス国際サクソフォンコンクール The 4th Jean-Marie Londeix International Saxophone Competitionの一次予選における参加者の国籍割合をグラフにしてみた(画像はクリックすると拡大)。中国・タイを筆頭に、日本、スペイン、アメリカ、オーストラリア、カナダ、台湾…が続く。以前に比べると全体の参加人数は減少した(78→67)。アジア圏からの参加割合が増加している。特に、中国からの参加者は以前の5人に比べて11人と、アジアのサクソフォン界の近年の発展を示すような状況に、驚くと同時に少し怖くなるのだった。

参加者の国籍割合は、PDFファイルで公開されているプログラム冊子から情報を引き出してきた。スクリプトを使って参加者データをCSVファイルに落とし、Excelで読み込んでグラフを作成している。

スクリプトはPerlを使って1時間くらいでサクっと書いたものなので、コードは汚いしバグもあって恥ずかしいことこの上ないのだが、誰か使いたい人がいるかもしれないので置いておく(お手持ちのプラットフォーム用の処理系を用意して自由にご利用ください)。プログラム冊子のPDFファイルを、Adobe Readerを使ってテキストファイルに変換、$input_file = "<ファイル名>"でそのテキストファイル名を指定すると、$output_file = "<ファイル名>"のcsvファイルが出力される。

元データに表記の揺れがあり、完全な状態にはできないが、そこは何卒、手修正でお願いします…。全てを手作業で抽出するよりは楽なはず…。もしくは、どなたかデバッグしてくれると嬉しいなあ(ボソ)。

$input_file  = "Londex-londex2014-web.txt";
$temp_file1  = "_temp1.txt";
$temp_file2  = "_temp2.txt";
$output_file = "output.csv";
@item = ("Name", "Nationality", "Date of Birth", "Music institution \(s\) attended", "Names of Principle Teachers", "Award", "Awards", "Professional Positions", "Profession Positions", "Professional Position", "The First Eliminatory Round", "The Second Eliminatory Round", "Final Round with orchestra", "List 1", "List 2" );

open(IN, $input_file);
open(OUT, "> $temp_file1");
while() {
 if ( $_ =~ /^\d{2}\s\n|^\s\n/ ) {
 } else {
  chomp;
  print OUT $_;
 }
}
close(IN);
close(OUT);

open(IN, $temp_file1);
open(OUT, "> $temp_file2");

while() {

 foreach $i (@item) {
  $_ =~ s/$i:/\n$i:/g;
 }
 print OUT $_;
}

close(IN);
close(OUT);

open(IN, $temp_file2);
open(OUT, "> $output_file");

while() {
 chomp;
 if ( $_ =~ /Name: / ) {
  print OUT "\n\"$_\",";
 } else {
  print OUT "\"$_\",";
 }
}

close(IN);
close(OUT);

unlink ($temp_file1);
unlink ($temp_file2);

0 件のコメント: