motogp fun

motogp ファンによる、モトgp 結果、モトgp日程を報告するブログ、ガジェットネタも

リザルトを加工しよう!2 VBSでCSV変換 motogp結果を円滑に更新するプロジェクト

前回、フリー走行や予選のリザルトが加工無しでは使えないと結論、早速利用しやすい形に加工します。

VBSで空白をカンマに置換

やりたいのは下記
-------------------------------------------------------------------------------------------------------------

1 93 Marc MARQUEZ SPA Repsol Honda Team HONDA 1'21.766 20 21 293.0

完成

1,93,Marc,MARQUEZ,SPA,Repsol Honda Team,HONDA,1'21.766,20,21,293.0

-------------------------------------------------------------------------------------------------------------

 ここで問題なのは、チーム名やマシン名の間に空白がある事。
さらにライダー名にミドル名が付いてる人もいる。
ドルナさんデータで使える様にしてよ~!!(勝手に使ってるけど文句出ます)

 

前回PDFからコピペして作ったTXTからCSVファイルを作成するプログラム

  • 実行が簡単なのでVBSで作成
  • 元ファイルはres1.txt、完成ファイルはout1.csvとする
  • 例外置換はReplace関数を利用 新しいパターンが発生したら随時追加する

     

利用する時は下記をテキストファイルにコピペし、拡張子をvbsに変更するだけ。
---------------------------------------------

'*********************************************
' MotoGPのリザルトを加工するVBS パターンFP
' New 2015.8.5 mota2
'*********************************************

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Const cRead = 1, cWrite = 2, cAppend = 8

strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")

'元ファイル
Set objIN = objFSO.OpenTextFile(strScriptPath+"\res1.txt", cRead)
'完成ファイル
Set objOUT = objFSO.OpenTextFile(strScriptPath+"\out1.csv", cWrite, True)

'元ファイル読み込みループ
Do Until objIN.AtEndOfStream
strLine = objIN.ReadLine
'空白をカンマ化
strOut = Replace(strLine," ",",")
'ミドル名を復元
strOut = Replace(strOut,"Alex,DE,ANGELIS","Alex,DE.ANGELIS")
strOut = Replace(strOut,"Mike,DI,MEGLIO","Mike,DI.MEGLIO")
'チーム名を復元
strOut = Replace(strOut,"Repsol,Honda,Team","Repsol Honda Team")
strOut = Replace(strOut,"Movistar,Yamaha,MotoGP","Movistar Yamaha MotoGP")
strOut = Replace(strOut,"EG,0,0,Marc,VDS","EG 0 0 Marc VDS")
strOut = Replace(strOut,"Octo,Pramac,Racing","Octo Pramac Racing")
strOut = Replace(strOut,"Ducati,Team","Ducati Team")
strOut = Replace(strOut,"Team,SUZUKI,ECSTAR","Team SUZUKI ECSTAR")
strOut = Replace(strOut,"CWM,LCR,Honda","CWM LCR Honda")
strOut = Replace(strOut,"Monster,Yamaha,Tech,3","Monster Yamaha Tech 3")
strOut = Replace(strOut,"Aspar,MotoGP,Team","Aspar MotoGP Team")
strOut = Replace(strOut,"Avintia,Racing","Avintia Racing")
strOut = Replace(strOut,"Aprilia,Racing,Team,Gresini","Aprilia Racing Team Gresini")
strOut = Replace(strOut,"AB,Motoracing","AB Motoracing")
strOut = Replace(strOut,"E-Motion,IodaRacing,Team","E-Motion IodaRacing Team")
strOut = Replace(strOut,"Athina,Forward,Racing","Athina Forward Racing")
'マシン名を復元
strOut = Replace(strOut,"YAMAHA,FORWARD","YAMAHA FORWARD")
'書き出し
objOUT.WriteLine strOut
Loop

objIN.Close
objOUT.Close

---------------------------------------

 

実行結果

f:id:motagp:20150805084038j:plain

イイ感じと思いき、21行目がずれてる。
元のPDF見ると、

f:id:motagp:20150805084526j:plain

なるほどね、同タイムだと空白にするんだ。
確かにこの手の要望お客様から依頼されることあるけど、何で差だけ・・・ドルナ!!
仕方ないので、この部分は元ファイルを手で修正。

再実行結果

完成!きれいになりました。

f:id:motagp:20150805085219j:plain

 

このエクセルを加工して、画像を登録しても良いけど、折角なのでhtml化しようかな。
次回に続く。きっと。