プロが教えるわが家の防犯対策術!

サンプルデータ
試合日程
16日(火)
得点,18,失点,11,天気,313,気温,80
2日(火)
得点,18,失点,11,天気,313,気温,80
20日(土)
得点,18,失点,11,天気,313,気温,80
19日(金)
得点,18,失点,11,天気,313,気温,80

上のようなCSVファイルから
第一回目の日程:16日(火)
第一回目の日付:16
第一回目の曜日:火
第二回目の日程:2日(火)
第二回目の日付:2
第二回目の曜日:火
第三回目の日程:20日(土)
第三回目の日付:20
第三回目の曜日:土
といった具合にperlを使ってテキストを抽出したいと考えています。最終的には整形したデータをcsvファイルなどに吐き出したいと思っています。教えてください。

質問者からの補足コメント

  • 自分の勉強不足という意味です。どうしてできないのかもわかっていないから。もうちょっと勉強してみます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/05/07 01:00

A 回答 (3件)

No.1 を、すこしわかりやすく



#!/usr/bin/perl
open F, "サンプルデータ.txt"; # 処理すべきファイルを開く
my $count = 0;
my @kansuji = ("〇","一","二","三","四","五","六","七","八","九");
while (<F>) { # ファイルを一行ごとに読み取る
if (/^(\d+)日\((\S+)\)$/) { # 行内に "16日(火)" の様なパターンが含まれるなら
my $nittei = $&; # パターン全体を「日程」として抽出
my $hiduke = $1; # パターン内1番目のグループを「日付」として抽出
my $yohbi = $2; # パターン内2番目のグループを「曜日」として抽出
my $kaisu = ++$n; # 「回数」を計上
$kaisu =~ s/([0-9])/$kansuji[$1]/eg; # 「回数」文字列の、アラビア数字を漢数字に置き換える
my $prefix = "第${kaisu}回目の"; # 共通の前置詞を編集しておく
print "${prefix}日程: $nittei\n";
print "${prefix}日付: $hiduke\n";
print "${prefix}曜日: $yohbi\n";
}
}
close F;

perl で使う記号がわからないなら、以下などを参考に
http://perldoc.jp/docs/perl/5.8.8/perlop.pod
http://www.tohoho-web.com/wwwperl1.htm
    • good
    • 1
この回答へのお礼

ありがとうございました。頑張ってみます。

お礼日時:2017/05/21 22:42

私が回答できる訳ではありませんが、


この質問で、最も難しい点は、第一回目、第二回目、第三回目と何回目かを示す値を漢字で表現する点です。
第1回目、第2回目、第3回目のようにしてはまずい理由がありますでしょうか。
又、どうしても漢字で表現したい場合、以下のような値は、漢字でどのように表現することを望みますか。
10回目
11回目
100回目
101回目
1000回目
10000回目
100000回目
    • good
    • 0
この回答へのお礼

洋数字でもいいのですが、今回は漢数字で頑張ってみます。ありがとうございました。

お礼日時:2017/05/21 22:42

my $n = 0;


my @h = ("〇","一","二","三","四","五","六","七","八","九");
while(<>) {
if (/^(\d+)日\((\S+)\)$/) {
my ($t,$d,$w,$a) = (++$n, $1, $2, $0);
$t =~ s/([0-9])/$h[$1]/eg;
$t = "第$t回目の";
print "$t日程:$a\n$t日付:$d\n$t曜日:$w\n";
}
}
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。でも自分でやってみても出来ないです。まだまだ勉強不足です。

お礼日時:2017/05/07 00:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!