私はこのようなアスキーテキストファイルを解析しようとしています。Tclでハイパーフォーマットされたテキストファイルの特定の枝を解析する
KEY1 VAL1
KEY2 VAL2
KEY3 VAL3
KEY4 VAL4
KEY5 VAL5
KEY6 VAL6
KEY7 VAL7
KEY8 VAL8
KEY9 VAL9
私はこれをキー1,5,7からの値のフラットテーブルに変換したいと思います。私はファイルをループして値を読み取るフラグを設定する非常に醜いbrute forceアルゴリズムを持っていますが、それは最も効率的ではありません。以下のような
何か:
set f [open $filename]
set data [split [read $f] "\n"]
foreach line $data {
if {[string match KEY1* $line] ==1} {set key1match 1}
if {($keymatch1==1) && ([string match KEY5* $line] ==1} {set key5match 1}
...
は、このマッピングを生成するために、よりエレガントな方法はありますか?
? 2つのスペース(または一貫した量)でインデントされている各サブレベルに頼ることができますか? –
私はこれをフラットなテーブルや辞書に入れたいと思っています。インデントは、検索のレベルに基づいて一貫した間隔です – Jonjilla