一部のテキスト データ (複雑な構造を持つ) を自動的に解析し、それを MySQL データベースに挿入するスクリプトを作成しています。
ファイル名との正規表現の一致に基づいて、ファイルのリストを反復処理する複数の for ループが必要です。最後に、それらを連結してデータベースに挿入します。
ここに私の正規表現があります:
Trgx= re.compile('([a-zA-Z0-9]{3,4})_.*_.*_.*$');
Dtrgx= re.compile('[a-zA-Z0-9]{3,4}_[a-zA-Z0-9]{3,4}_([0-9]{10})_[0-9]{3}');
Mrgx= re.compile('.*_([a-zA-Z0-9]{3,4})_.*$');
Hrgx= re.compile('.*([0-9]{3}).csv$');
ファイル名は次のようになります。
ecd_cdd_2012102100_000.csv
ecd_cdd_2012102100_024.csv
ecd_hdd_2012102200_000.csv
ecd_hdd_2012102200_024.csv
ecd_hdd_2012102200_048.csv
ecd_avgt_2012102200_120.csv
ecd_avgt_2012102200_144.csv
ecd_avgt_2012102200_168.csv
ecd_mint_2012102200_192.csv
ecd_maxt_2012102200_144.csv
ecd_maxt_2012102200_168.csv
ecd_cdd_2012102200_000.csv
ecd_cdd_2012102200_024.csv
各式は、ファイル名のサブセットをキャプチャします。
- Trgxは最初の部分をキャプチャします (この例ではすべてのインスタンスで「ecd」)。
- Mrgxは 2 番目の部分 ("cdd"、"hdd"、"avgt" など) をキャプチャします。
- Dtrgxは日付/時刻セグメントをキャプチャします (2012102100 など)
- Hrgx は最後の部分 (拡張子の前の 000 や 024 など) をキャプチャします。
すべてのファイル名はすべての正規表現に一致.group(1)
しますが、異なる値が入力されます。
正規表現表現を「グループ化」要素として使用してファイルを反復処理し、それらを正しい順序で連結したいと考えています。
このようなもの:
for fileName in fileNameList
for each distinct value in Trgx.group(1)
for each distinct value in Dtrgx.group(1)
for each distinct value in Hrgx.group(1)
do whatever