競馬の出馬表整形についてNo.06832
korio さん 00/11/15 02:03
 
皆さん始めましてm(_ _)m
秀丸マクロ初心者&プログラミング初心者です。

下記形式の出馬表を整形するマクロを組みたいのですがどこから手を付けて
いいのか全く分からないので困っております。出馬表なので最大で18頭ま
で出走してくるのですが長文になる為2頭しか出走していない例にしており
ます。また、最大36レースまでありますが今回は2レースのみにしており
ましす。文字が存在するパターンは下記の通りなので繰り返し処理をすれば
出来ると思いチャレンジしましたが訳が分からず撃沈です。どうかご指導の
方よろしくお願いいたします。

◆整形前

2000年11月12日(日) 4回福島6日目 09:50発走
1R  
3歳・未勝利(馬齢)   ダート 1000m   12頭立

B枠馬 馬名               性齢 騎手    斤量     調教師   馬主     生産者   毛色
B1  1 オーミバンベール  牝3 *内田浩一 53☆(栗)宮徹   岩僖澄   山本和彦 青鹿
 2  2 オールインオール  牝3 *大西直宏 53 (美)萱野浩二 伊達秀和 サンシャ 鹿毛

馬 父                 母                 母の父             母の母
 1 サクラチトセオー   アズマフアンシー   アズマハンター     アズマローマン    
 2 コタシャーン       モンパリ           マルゼンスキー     イザベラ          

1 ZI[  84]  42T
2 ZI[ 110]  91T  95T

2000年11月12日(日) 4回福島6日目 10:15発走
2R  
4歳・未勝利(馬齢)   ダート 1700m   13頭立

B枠馬 馬名               性齢 騎手    斤量     調教師   馬主     生産者   毛色
 1  1 トゥルース     牝4  千田輝彦 53 (栗)田原成貴 キャロッ グリーン 鹿毛
 2  2 ホーマンハンター  牡4  松田大作 55▲(栗)松元茂樹 久保久人 田上稔   鹿毛

馬 父                 母                 母の父             母の母
 1 アンバーシヤダイ   ココ               Explodent          セクスタリー      
 2 ジェイドハンター   サンルージュ       シエイデイハイツ   チカノヴァ        

 1 ZI[  97]  57D  95D  89T  70T  79D
 2 ZI[  92]  87T


◆整形後

2000年11月12日(日) 4回福島6日目 09:50発走
1R  
3歳・未勝利(馬齢)   ダート 1000m   12頭立

枠馬 馬名               性齢 騎手    斤量 調教師
1  1 オーミバンベール  牝3  内田浩一 53 宮徹
2  2 オールインオール  牝3  大西直宏 53 萱野浩二

2000年11月12日(日) 4回福島6日目 10:15発走
2R  
4歳・未勝利(馬齢)   ダート 1700m   13頭立

枠馬 馬名               性齢 騎手    斤量 調教師
1  1 トゥルース     牝4  千田輝彦 53 田原成貴
2  2 ホーマンハンター  牡4  松田大作 55 松元茂樹


[ ]
RE:06832 競馬の出馬表整形についてNo.06834
ENCODINGSHIFTJIS さん 00/11/15 14:09
 

ベタテキストとは性格の合わない構造化データ(強い型付け)
の扱いですから、Excel・Accessなど、で項目を枠にハメて処理するのが
王道です。商品化するソフトなら,そうでないと受け入れられない。
これからなら、XMLでしょうか(2年連続で、ビル・ゲイツ会長も講演
した in COMDEX)

と言っても、ペタテキストの処理をでっち上げるのは可能です。
不要部削除または抽出部カット&ペーストのどちらかの方針で
作ります。 状況依存度 は大きい、こうゆうのが テキストベースの
処理の味わいだ。

// del01.mac  項目抽出    SELECT abc FROM  def WHERE ghi;
// ファイルの安全対策とか 操作のガイドは無し、処理部のみ
//   不要行削除
escape;
gofiletop;
while(1){
          searchdown "^馬 父",regular; if(!result)break;menu "jffff";
beginsel; searchdown "^[0-9][0-9][0-9][0-9]年",regular; delete;
// 最終行には 0000年 を書いておく
 }
gofiletop;
// del02.mac 項目削除
while(1){
moveto 55,y; deleteafter;
down; if(!result)break;
 }

//行末空白の残りは他のマクロを参考にして 削除して






[ ]
RE:06832 競馬の出馬表整形についてNo.06838
安久津 さん 00/11/15 17:36
 
// ここから、
  disableinvert;
  // いらないものをまず削除する。
  $$lineage = "^馬 +父 +母 +母の父 +母の母";
  $$date = "^[0-9]+年[0-9]+月[0-9]+日\\([日月火水木金土]\\)";
  // $$date = "^[0-9]+年 ?[0-9]+月 ?[0-9]+日\\([日月火水木金土]\\)";
  gofiletop;
  searchdown $$lineage, regular;
  while( result ){
    escape; beginsel;
    searchdown $$date, regular;
    if( ! result ) gofileend;
    delete;
    searchdown $$lineage, regular;
  }
  replaceallfast " +調教師 +馬主 +生産者 +.*", " 調教師", regular;
  replaceallfast " *", "  ";
  replaceallfast " +$", "", regular; // おまけ

  // 整形
  $$weight = " [0-9]+\\f[ ▲☆]\\([^\\)]+\\)\\f[^  ]+\\f.+";// <-【注意】
  replaceallfast $$weight, "\\0 \\2", regular;
beep;
endmacro;
// ここまで。

【注意】について。
「斤量」と「調教師」の間、「☆(栗)」「 (美)」「▲(栗)」の種類が
他にもあるなら、それを【注意】に反映する必要があります。
以下は、他の記号 ★●◎ を加えた例です。

$$weight = " [0-9]+\\f[ ▲☆★●◎]\\([^\\)]+\\)\\f[^  ]+\\f.+";

ではでは。

[ ]
RE:06838 競馬の出馬表整形についてNo.06839
安久津 さん 00/11/15 17:53
 
忘れてた。(^^;
最後に加えて下さい。

  replaceallfast "^B枠馬 馬名","枠馬 馬名", regular;
  replaceallfast "^[ B]\\f[0-9]", "\\1", regular;

ではでは。

[ ]
RE:06834 競馬の出馬表整形についてNo.06843
korio さん 00/11/16 02:01
 
早速ありがとうございました。m(_ _)m

>ベタテキストとは性格の合わない構造化データ(強い型付け)
>の扱いですから、Excel・Accessなど、で項目を枠にハメて処理するのが
>王道です。商品化するソフトなら,そうでないと受け入れられない。

Excel・Accessも検討したのですがVBAに関してもやはり初心者なので
秀丸のスクリプトではどのように処理するのか知りたかったのと
このようなテキスト整形マクロを是非マスターしたいと思いまして・・

>と言っても、ペタテキストの処理をでっち上げるのは可能です。
>不要部削除または抽出部カット&ペーストのどちらかの方針で
>作ります。 状況依存度 は大きい、こうゆうのが テキストベースの
>処理の味わいだ。

うぅ、マクロを見ましたが何がなんだかさっぱりです。
ヘルプを見てお勉強しますので近日中にレスいたします。

それでは・・

[ ]
RE:06838 競馬の出馬表整形についてNo.06844
korio さん 00/11/16 02:06
 
ありがとうございます。
早速マクロを試してみますので後日結果をご報告いたします。
それでは・・(‘ー‘)/~~


[ ]
RE:06838 競馬の出馬表整形についてNo.06871
korio さん 00/11/22 00:33
 
ヘルプを読みまくってやっと質問する準備が出来ました。f(^_^)

>  $$lineage = "^馬 +父 +母 +母の父 +母の母";
>  $$date = "^[0-9]+年[0-9]+月[0-9]+日\\([日月火水木金土]\\)";
>  // $$date = "^[0-9]+年 ?[0-9]+月 ?[0-9]+日\\([日月火水木金土]\\)";

このこの辺は文字列型変数に正規表現で宣言している理解してよろしいでしょう
か・・?
最初は「^」とか「\\」意味不明でしたので何となく分かるまで大変でした。

>  gofiletop;
>  searchdown $$lineage, regular;
>  while( result ){
>    escape; beginsel;
>    searchdown $$date, regular;
>    if( ! result ) gofileend;
>    delete;
>    searchdown $$lineage, regular;
>  }

上記、「while( result){」以降の処理内容が今一理解出来ません。
ヘルプを読むと
「その直後にある条件式の値が0以外である間,処理をくりかえします。」
とありましたが、この場合「searchdown $$date, regular;」で$$dateに代入した正
規表現文字列を下方検索している事までは理解出来ましたが

    if( ! result ) gofileend;
    delete;
    searchdown $$lineage, regular;

ここでどうなっているのかが分からないのです。
申し訳ありませんが解説していただけませんでしょうか?

これ以降も分からない所がありましたが、今疑問に思っている事が理解
出来ましたらまたお聞きしますのでよろしくお願いします

[ ]
RE:06834 競馬の出馬表整形についてNo.06872
korio さん 00/11/22 00:42
 
ヘルプを読みまくり正規表現という言葉に出会いました。
まずここを理解しないと希望通りの動作は難しいですね・・
阿久津さんのスレッドで勉強していこうと思いますので
よろしくお願いいたします。m(_ _)m


[ ]
RE:06872 競馬の出馬表整形についてNo.06873
ENCODINGSHIFTJIS さん 00/11/22 09:12
 
長い式(正規表現)は非直感的結果を生むことがある(落し穴)
マクロを作らなくとも メニュー>検索 で何回も試行して感じをつかみ
「テキスト処理の美学」を味わってください。

[ ]
RE:06871 競馬の出馬表整形についてNo.06879
安久津 さん 00/11/22 20:44
 
>ヘルプを読みまくってやっと質問する準備が出来ました。f(^_^)
お答えする気持ちになりました。(^^)

>>  $$lineage = "^馬 +父 +母 +母の父 +母の母";
>>  $$date = "^[0-9]+年[0-9]+月[0-9]+日\\([日月火水木金土]\\)";
>>  // $$date = "^[0-9]+年 ?[0-9]+月 ?[0-9]+日\\([日月火水木金土]\\)";
>
>このこの辺は文字列型変数に正規表現で宣言している理解してよろしいでしょう
>か・・?
その通りです。

>申し訳ありませんが解説していただけませんでしょうか?
ループ処理なので全体を通して説明いたします。

  searchdown $$lineage, regular; // 血統の行を検索。(1)
  while( result ){ // 検索にマッチすると選択状態。
    escape; // 選択状態解除。( 不可欠でない )
    beginsel; // 選択開始。( 血統の行の行頭から選択開始 )
    searchdown $$date, regular; // 日付の行を検索。
    if( ! result ) gofileend; // 日付の行が見つからないなら、file終端まで選択。
 // else だと、日付の行まで選択。( 正確には、日付の行の直前行まで選択 )
    delete; // 選択範囲削除。および選択状態解除。
    searchdown $$lineage, regular; // (1)と同じ。
  }


 beginsel を実行してから、下検索すると被検索文字の直前まで選択されます。


>これ以降も分からない所がありましたが、今疑問に思っている事が理解
>出来ましたらまたお聞きしますのでよろしくお願いします
以降は、正規表現およびタグ付正規表現による置換です。
正規表現については「秀丸Q&A集」がとっても役立ちます。
JRくんさんの http://win.blue.co.jp/~jr-kun/ から辿って
ダウンロードできます。

ではでは。

[ ]
RE:06879 競馬の出馬表整形についてNo.06889
korio さん 00/11/26 16:44
 
安久津さん、ご協力大変助かっております。
動作確認とマクロを勉強しながらなのでレスが遅くなっておりすみません

> >ヘルプを読みまくってやっと質問する準備が出来ました。f(^_^)
> お答えする気持ちになりました。(^^)

ありがとうござます。f(^_^)

> ループ処理なので全体を通して説明いたします。
>
>   searchdown $$lineage, regular; // 血統の行を検索。(1)
>-------------------中略----------------------------------

理解できました。

> 以降は、正規表現およびタグ付正規表現による置換です。
> 正規表現については「秀丸Q&A集」がとっても役立ちます。
> JRくんさんの http://win.blue.co.jp/~jr-kun/ から辿って
> ダウンロードできます。

ダウンロードしました。
頑張って勉強します。

教えていただいたマクロの動作確認をご報告していませんでしたが、少し修正し
たので殆ど希望通りに動作しております。しかし以下のケースの場合うまく置換
出来ませんのでこの部分を教えて下さい。

*マクロ実行前

2000年11月25日(土) 5回京都7日目 15:40発走
11R  第45回京阪杯
4歳以上・オープン・G3(ハンデ) (混)(特指)  芝・外 1800m   18頭立

B枠馬 馬名               性齢 騎手    斤量     調教師   馬主     生産者   毛色
 1  1 グレイスナムラ   牝5  小林徹弥 50 (栗)目野哲也 奈村信重 伊藤明   栗毛
 1  2 マルカコマチ    牝6  福永祐一 54 (栗)北橋修二 河長産業 社台ファ 鹿毛
 2  3 ブリリアントロード 牡6  山田和広 57 (栗)坪正直  大沢毅   大栄牧場 鹿毛
 2  4 ロサード      牡5 *安藤勝己 57 (栗)橋口弘次 社台レー<ノーザン<鹿毛
 3  5$エイシンキャメロン 牡5 *武幸四郎 56 (栗)坂口正則 平井豊光 Happy Hi 栗毛
 3  6 エリモブライアン  牡4  藤田伸二 54 (栗)清水出美 山本慎一 えりも農 鹿毛
 4  7 トッププロテクター 牡4 *和田竜二 53 (栗)岩元市三 宮内牧場 宮内牧場 栗毛
 4  8*ケープリズバーン  牝6 *飯田祐史 51 (栗)池江泰郎 社台レー<ノーザン<栗毛
 5  9 トウカイパンチ   牡6 *四位洋文 53 (栗)安田隆行 内村正則 吉田又治 鹿毛
 5 10 ジョウテンブレーヴ 牡4 *ペリエ  54 (美)相沢郁  田邉久男 田上稔   鹿毛
 6 11 トーワラノビア   牝6 *河内洋  52 (栗)佐山優  齋藤すゞ 村本牧場 芦毛
 6 12*アドマイヤコジーン 牡5 *芹沢純一 56 (栗)橋田満  近藤利一 大樹ファ 芦毛
 7 13 クラフトマンシップ 牡6  勝浦正樹 54 (美)後藤由之 日本ダイ 白老ファ 鹿毛
 7 14 ニッポーアトラス  牡7 *佐藤哲三 55 (美)久保田敏 エヌ・ア 野島牧場 黒鹿
 7 15$アメリカンボス   牡6  江田照男57.5 (美)田子冬樹 畔蒜不動 Candylan 鹿
毛<--この行です
B8 16$ロードアヘッド   牡7 *久保田英 51 (栗)田所秀孝 門野重雄 Skara Gl 栗毛
 8 17 センターフレッシュ 牡6  幸英明  56 (栗)二分久男 中野優   佐藤正光 鹿毛
 8 18 クリノキングオー  牡4 *上村洋行 52 (栗)谷潔   栗本博晴 富菜牧場 鹿毛

*マクロ実行後

2000年11月25日(土) 5回京都7日目 15:40発走
11R  第45回京阪杯
4歳以上・オープン・G3(ハンデ) (混)(特指)  芝・外 1800m   18頭立

枠馬 馬名               性齢 騎手    斤量 調教師
1  1 グレイスナムラ   牝5  小林徹弥 50 目野哲也
1  2 マルカコマチ    牝6  福永祐一 54 北橋修二
2  3 ブリリアントロード 牡6  山田和広 57 坪正直
2  4 ロサード      牡5  安藤勝己 57 橋口弘次
3  5 エイシンキャメロン 牡5  武幸四郎 56 坂口正則
3  6 エリモブライアン  牡4  藤田伸二 54 清水出美
4  7 トッププロテクター 牡4  和田竜二 53 岩元市三
4  8 ケープリズバーン  牝6  飯田祐史 51 池江泰郎
5  9 トウカイパンチ   牡6  四位洋文 53 安田隆行
5 10 ジョウテンブレーヴ 牡4  ペリエ  54 相沢郁
6 11 トーワラノビア   牝6  河内洋  52 佐山優
6 12 アドマイヤコジーン 牡5  芹沢純一 56 橋田満
7 13 クラフトマンシップ 牡6  勝浦正樹 54 後藤由之
7 14 ニッポーアトラス  牡7  佐藤哲三 55 久保田敏
7 15 アメリカンボス   牡6  江田照男57.5 (美)田子冬樹 畔蒜不動 Candylan 鹿
毛<--この行です
8 16 ロードアヘッド   牡7  久保田英 51 田所秀孝
8 17 センターフレッシュ 牡6  幸英明  56 二分久男
8 18 クリノキングオー  牡4  上村洋行 52 谷潔

斤量で57.5のように小数点が出てくるとその行がうまく行かないようです。
以下の部分が該当するマクロ部分だと思いますので抜粋しておきます。

// 整形
$$weight = " [0-9]+\\f[ △▲☆]\\([^\\)]+\\)\\f[^  ]+\\f.+";
replaceallfast $$weight, "\\0 \\2", regular;

関係ないと思いますが上記出馬表の該当する行で(美)の部分は全部で3つパ
ターンがあります。(美)(栗)(招)です。

ここを解決出来れば殆ど完成ですのでよろしくお願いいたします。

[ ]
RE:06889 競馬の出馬表整形についてNo.06890
安久津 さん 00/11/26 20:52
 
>斤量で57.5のように小数点が出てくるとその行がうまく行かないようです。
了解いたしました。

>関係ないと思いますが上記出馬表の該当する行で(美)の部分は全部で3つパ
>ターンがあります。(美)(栗)(招)です。
これはたいへん有益な情報です。

以下の具合でどうでしょうか?

// ここから、
  disableinvert;
  $$lineage = "^馬 +父 +母 +母の父 +母の母";
  $$date = "^[0-9]+年[0-9]+月[0-9]+日\\([日月火水木金土]\\)";
  gofiletop;
  searchdown $$lineage, regular;
  while( result ){
    escape; beginsel;
    searchdown $$date, regular;
    if( ! result ) gofileend;
    delete;
    searchdown $$lineage, regular;
  }
  replaceallfast " +調教師 +馬主 +生産者 +.*", " 調教師", regular;
  replaceallfast " *", "  ";
  replaceallfast " +$", "", regular;
// 以降が新しい部分。
  // 整形
  $$weight = "[0-9.]+\\f[  △▲☆]\\([美栗招]\\)\\f[^  ]+\\f.+";
  replaceallfast $$weight, "\\0 \\2", regular;
  // 追加
  replaceallfast "^B枠馬 馬名","枠馬 馬名", regular;
  replaceallfast "^[ B]\\f[0-9]", "\\1", regular;
  replaceallfast "^[0-9]+ +[0-9]+\\f[$*]","\\0 ", regular;
beep;
endmacro;
// ここまで。

一番最後の置換は、

3  5$エイシンキャメロン 牡5  武幸四郎 56 坂口正則
6 12*アドマイヤコジーン 牡5  芹沢純一 56 橋田満

などを、

3  5 エイシンキャメロン 牡5  武幸四郎 56 坂口正則
6 12 アドマイヤコジーン 牡5  芹沢純一 56 橋田満

にします。
では。

[ ]
RE:06890 競馬の出馬表整形についてNo.06891
korio さん 00/11/27 03:47
 
動作報告です。

◆マクロ実行結果1

§実行前

 7 14 ニッポーアトラス  牡7 *佐藤哲三 55 (美)久保田敏 エヌ・ア 野島牧場 黒鹿
 7 15$アメリカンボス   牡6  江田照男57.5 (美)田子冬樹 畔蒜不動 Candylan 鹿毛
B8 16$ロードアヘッド   牡7 *久保田英 51 (栗)田所秀孝 門野重雄 Skara Gl 栗毛

§実行後

7 14 ニッポーアトラス  牡7  佐藤哲三 55 久保田敏
7 15 アメリカンボス   牡6  江田照男57.5 田子冬樹<---この行
8 16 ロードアヘッド   牡7  久保田英 51 田所秀孝

15番の57.5右が全角スペースに置換わってしまい調教師の列がズレてしまいます。
斤量に小数点がある場合は全てこのような結果になってしまいますが何か良い案
がありましたらよろしくお願いいたします。

◆マクロ実行結果2

§実行前

2000年11月12日(日) 4回福島6日目 14:05発走
9R  磐梯山特別
4歳以上・900万下(ハンデ) (混)  芝 2000m   7頭立

B枠馬 馬名               性齢 騎手    斤量     調教師   馬主     生産者   毛色
 1  1 トップラダー    牡7  伊藤直人 55 (美)小林常泰 社台レー 白老ファ 黒鹿
 2  2 トウカイロッキー  セ6 *中舘英二 55 (栗)中村均 <内村正則 松栄牧場 鹿毛
 3  3 ラブイズドリーム  牝5  大西直宏 53 (栗)谷潔   江口雄一 山口明秀 黒鹿
 4  4$ターファンスズカ  セ6  芹沢純一 54 (栗)橋田満  永井啓弐 John Mck 鹿毛
 5  5 トウキョウマンボ  牡4  中谷雄太 52 (栗)中村均 <佐藤尋司 三栄牧場 黒鹿
 6  6 スプリングナント  セ5 *坂井千明 55 (美)前田禎  加藤春夫 三宅牧場 鹿毛
 7  7 ミルダイヤ     牝5 *植野貴也 51 (栗)鮫島一歩 池田豊治 鎌田正嗣 栗毛

2000年11月12日(日) 6回東京4日目 11:15発走
4R  
3歳・500万下(馬齢) (市)(抽)(特指)  ダート 1400m   11頭立

B枠馬 馬名               性齢 騎手    斤量     調教師   馬主     生産者   毛色
 1  1 コウエイマーベラス 牝3 *勝浦正樹 53 (栗)山内研二 伊東政清 豊郷牧場 栗毛
 2  2 テンドウ      牡3 *江田照男 54 (美)星野忍  加藤信之 佐藤正光 芦毛
 3  3 スナークリバティ  牡3  小林淳一 54 (栗)川村禎彦 杉本仙次 ベルモン 黒鹿
 4  4 フーテンスマイル  牡3 *村田一誠 54 (美)畠山吉宏<榎本二三 六角牧場 栗毛
 5  5 ローランドゥキー  牡3 *柴田善臣 54 (美)畠山吉宏<斉藤敏博 滝沢牧場 鹿毛
 6  6 コスモリアライズ  牡3 *吉田豊  54 (美)稲葉隆一 岡田美佐 フジワラ 鹿毛
 6  7 トミケンファントム 牡3 *石崎隆之 54 (招)出川克己 トミケン 戸川仁   鹿毛
 7  8 アイノウルフ    牡3 *武幸四郎 54 (栗)藤沢則雄 田中京子 荒井ファ 栗毛
 7  9 パブリックイメージ 牡3 *北村宏司 53☆(美)国枝栄  陣内孝則 平成ファ 鹿毛
 8 10 ヒカルヒカル    牝3 *金井正幸 53 (招)法理勝弘 中脇満   村下明博 鹿毛
 8 11 ユーセイキッド   牡3 *的場均  54 (美)高木嘉夫 小川敏夫 高昭牧場 鹿毛

§実行後

2000年11月12日(日) 4回福島6日目 14:05発走
9R  磐梯山特別
4歳以上・900万下(ハンデ) (混)  芝 2000m   7頭立

枠馬 馬名               性齢 騎手    斤量 調教師
1  1 トップラダー    牡7  伊藤直人 55 小林常泰
2  2 トウカイロッキー  セ6  中舘英二 55 中村均  <---この行
3  3 ラブイズドリーム  牝5  大西直宏 53 谷潔
4  4 ターファンスズカ  セ6  芹沢純一 54 橋田満
5  5 トウキョウマンボ  牡4  中谷雄太 52 中村均  <---この行
6  6 スプリングナント  セ5  坂井千明 55 前田禎
7  7 ミルダイヤ     牝5  植野貴也 51 鮫島一歩

2000年11月12日(日) 6回東京4日目 11:15発走
4R
3歳・500万下(馬齢) (市)(抽)(特指)  ダート 1400m   11頭立

枠馬 馬名               性齢 騎手    斤量 調教師
1  1 コウエイマーベラス 牝3  勝浦正樹 53 山内研二
2  2 テンドウ      牡3  江田照男 54 星野忍
3  3 スナークリバティ  牡3  小林淳一 54 川村禎彦
4  4 フーテンスマイル  牡3  村田一誠 54 畠山吉宏<榎本二三<---この行
5  5 ローランドゥキー  牡3  柴田善臣 54 畠山吉宏<斉藤敏博<---この行
6  6 コスモリアライズ  牡3  吉田豊  54 稲葉隆一
6  7 トミケンファントム 牡3  石崎隆之 54 出川克己
7  8 アイノウルフ    牡3  武幸四郎 54 藤沢則雄
7  9 パブリックイメージ 牡3  北村宏司 53 国枝栄
8 10 ヒカルヒカル    牝3  金井正幸 53 法理勝弘
8 11 ユーセイキッド   牡3  的場均  54 高木嘉夫

同じレースで同調教師の2頭出には、調教師名<馬主名という具合に"<"が間に入
ります。中村均のように3文字名は問題ないようですが、MAXの4文字名にな
ると調教師の1つ右にある"<馬主名"のみ残ってしまいます。下記の行を追加す
ると回避出来ましたが、今一つスマートでは無い気がします。f(^_^)

replaceallfast "<.*","",regular;

何か他の方法がありますでしょうか?

◆マクロ修正報告

> // ここから、
>   disableinvert;
>   $$lineage = "^馬 +父 +母 +母の父 +母の母";
>   $$date = "^[0-9]+年[0-9]+月[0-9]+日\\([日月火水木金土]\\)";

//修正前
$$date = "^[0-9]+年[0-9]+月[0-9]+日\\([日月火水木金土]\\)";
//修正後
$$date = "^[0-9]+年[ 0-9]+月[ 0-9]+日\\([日月火水木金土]\\)";

右記の、"2000年11月 4日(土) 4回福島3日目 10:15発走" のような場合ですと、
4日がマッチングせずに抜けてしまい2R以降最終行まで全て削除されしまいま
した 1月〜9月、1日〜9日に該当する場合は全てNGでしたので[0-9]を[ 0-9]と
いう具合に半角スペースを挿入したら解決出来ました。

>   gofiletop;
>   searchdown $$lineage, regular;
>   while( result ){
>     escape; beginsel;
>     searchdown $$date, regular;
>     if( ! result ) gofileend;
>     delete;
>     searchdown $$lineage, regular;
>   }
>   replaceallfast " +調教師 +馬主 +生産者 +.*", " 調教師", regular;
>   replaceallfast " *", "  ";
>   replaceallfast " +$", "", regular;
> // 以降が新しい部分。
>   // 整形
>   $$weight = "[0-9.]+\\f[  △▲☆]\\([美栗招]\\)\\f[^  ]+\\f.+";
>   replaceallfast $$weight, "\\0 \\2", regular;
>   // 追加
>   replaceallfast "^B枠馬 馬名","枠馬 馬名", regular;
>   replaceallfast "^[ B]\\f[0-9]", "\\1", regular;
>   replaceallfast "^[0-9]+ +[0-9]+\\f[$*]","\\0 ", regular;

    //上記"調教師<馬主"の件で追加してみました
    replaceallfast "<.*","",regular;

> beep;
> endmacro;
> // ここまで。

度々申し訳ありませんがよろしくお願いいたします。

[ ]
RE:06891 競馬の出馬表整形についてNo.06892
ENCODINGSHIFTJIS さん 00/11/27 10:46
 
>ると回避出来ましたが、今一つスマートでは無い気がします。f(^_^)
ベタテキスト「スペース_マークアップ_ランゲージ」上の データ処理とは
そんなものです。項目を正確に見てゆくと、かえって、データの表記の振れ
に敏感になったりします。 すぐ対応できるのも マクロの良いところでもあるが

// delfixpos1.mac   固定桁 発想の 削除
// 2  2 トウカイロッキー  セ6 *中舘英二55.5 (栗)中村均 <内村正則 松栄牧場
鹿毛
// 55全角空白   55.5半角空白  混在はやりにくい
##banushipos=56; // 見出し行から取得しておくと,マクロの保守しやすい。
##kinaftepos=43;
##kishutopos=30;
##bameitopos=6;
//
         escape; gofiletop;
while(1){
searchdown "^ [1-9] ",regular; if(!result) break; // 頭出し _9_ の行
movetolineno ##banushipos,lineno; deleteafter;
movetolineno ##kinaftepos,lineno; beginsel;
movetolineno ##kinaftepos+6,lineno; delete;insert "  ";
movetolineno ##kishutopos,lineno;   delete; insert " ";
movetolineno ##bameitopos,lineno;   delete; insert " ";
 }

色々な発想で 処理を経験してください。



[ ]
RE:06891 競馬の出馬表整形についてNo.06897
安久津 さん 00/11/27 21:48
 
>◆マクロ実行結果1
>15番の57.5右が全角スペースに置換わってしまい調教師の列がズレてしまいます。
了解いたしました。

>◆マクロ実行結果2
>同じレースで同調教師の2頭出には、調教師名<馬主名という具合に"<"が間に入
了解いたしました。

>ると調教師の1つ右にある"<馬主名"のみ残ってしまいます。下記の行を追加す
>ると回避出来ましたが、今一つスマートでは無い気がします。f(^_^)
>
>replaceallfast "<.*","",regular;
>
>何か他の方法がありますでしょうか?
これで良いと思います。

>◆マクロ修正報告
>//修正後
>$$date = "^[0-9]+年[ 0-9]+月[ 0-9]+日\\([日月火水木金土]\\)";
>
>右記の、"2000年11月 4日(土) 4回福島3日目 10:15発走" のような場合ですと、
>4日がマッチングせずに抜けてしまい2R以降最終行まで全て削除されしまいま
>した 1月〜9月、1日〜9日に該当する場合は全てNGでしたので[0-9]を[ 0-9]と
>いう具合に半角スペースを挿入したら解決出来ました。
自分で解決できると自信もつくし気分良くなります。(^^)

  // 元の「整形」部分と以下を入れ替えて下さい。2つに場合わけしました。
  // 整形( ◆マクロ実行結果1/2対処用 )
  $$weight = "[0-9]+\\f[ △▲☆]\\([美栗招]\\)\\f[^  <]+\\f.+";
  replaceallfast $$weight, "\\0 \\2", regular;
  $$weight = "[0-9.]+\\f[ △▲☆]\\([美栗招]\\)\\f[^  <]+\\f.+";
  replaceallfast $$weight, "\\0 \\2", regular;

では。

[ ]
RE:06892 競馬の出馬表整形についてNo.06907
korio さん 00/11/29 02:19
 
> ベタテキスト「スペース_マークアップ_ランゲージ」上の データ処理とは
> そんなものです。項目を正確に見てゆくと、かえって、データの表記の振れ
> に敏感になったりします。 すぐ対応できるのも マクロの良いところでもあるが

そうですね、ベタテキストの処理はそれなりのノウハウが必要ですね。

>
> // delfixpos1.mac   固定桁 発想の 削除
> // 2  2 トウカイロッキー  セ6 *中舘英二55.5 (栗)中村均 <内村正則 松栄牧場
> 鹿毛
> // 55全角空白   55.5半角空白  混在はやりにくい
> ##banushipos=56; // 見出し行から取得しておくと,マクロの保守しやすい。
> ##kinaftepos=43;
> ##kishutopos=30;
> ##bameitopos=6;
> //
>          escape; gofiletop;
> while(1){
> searchdown "^ [1-9] ",regular; if(!result) break; // 頭出し _9_ の行
> movetolineno ##banushipos,lineno; deleteafter;
> movetolineno ##kinaftepos,lineno; beginsel;
> movetolineno ##kinaftepos+6,lineno; delete;insert "  ";
> movetolineno ##kishutopos,lineno;   delete; insert " ";
> movetolineno ##bameitopos,lineno;   delete; insert " ";
>  }
>
> 色々な発想で 処理を経験してください。

少し勉強してからまたレスいたします。
その時はよろしくお願いいたします。m(_ _)m

[ ]
RE:06897 競馬の出馬表整形についてNo.06908
korio さん 00/11/29 02:19
 
安久津さんどうも

> 自分で解決できると自信もつくし気分良くなります。(^^)

そうですね、ある程度自身がついてきました。(^-^)

>
>   // 元の「整形」部分と以下を入れ替えて下さい。2つに場合わけしました。
>   // 整形( ◆マクロ実行結果1/2対処用 )
>   $$weight = "[0-9]+\\f[ △▲☆]\\([美栗招]\\)\\f[^  <]+\\f.+";
>   replaceallfast $$weight, "\\0 \\2", regular;
>   $$weight = "[0-9.]+\\f[ △▲☆]\\([美栗招]\\)\\f[^  <]+\\f.+";
>   replaceallfast $$weight, "\\0 \\2", regular;

完璧です。
助かりました。m(_ _)m

また分からない事がありましたらよろしくお願いいたします。

[ ]