我正在制作一个脚本来自动解析一些文本数据(具有复杂的结构)并将其插入 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捕获第二部分(“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