Python:通过匹配regex进行迭代

2024-09-28 21:04:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个脚本来自动解析一些文本数据(具有复杂的结构),并将其插入到MySQL数据库中。在

我希望有多个for循环,根据regex与文件名的匹配遍历文件列表。最后,我将连接它们并将它们插入数据库中。在

以下是我的正则表达式:

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$'); 

我的文件名如下:

^{pr2}$

每个表达式捕获文件名的一个子集:

  • Trgx捕获第一部分(本例中每个实例中的“ecd”)
  • Mrgx捕获第二部分(“cdd”、“hdd”、“avgt”等)
  • Dtrgx捕获日期/时间段(如2012102100)
  • Hrgx捕获最后一个部分(如扩展之前的000或024)

每个文件名将匹配每个正则表达式,但将填充.group(1) 不同的价值观。在

我想使用regex表达式作为“分组”元素遍历文件,以便以正确的顺序将它们连接在一起。在

像这样:

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

Tags: inre数据库forvalue文件名groupeach
1条回答
网友
1楼 · 发布于 2024-09-28 21:04:58

将正则表达式组合在一起可能更容易

re_fn = re.compile('(?P<T>[a-zA-Z0-9]{3,4})_(?P<M>[a-zA-Z0-9]{3,4})_(?P<Dt>[0-9]{10})_(?P<H>[0-9]{3}).csv')

省去了维护四个正则表达式的麻烦。在

那你就可以

^{pr2}$

相关问题 更多 >