我有以下显示这种格式的文件名:

000014_L_20111007T084734-20111008T023142.txt
000014_U_20111007T084734-20111008T023142.txt
...

我想在第二个下划线'_'之后和'.txt'之前提取中间的两个时间戳部分。因此,我使用了以下Python正则表达式字符串拆分:
time_info = re.split('^[0-9]+_[LU]_|-|\.txt$', f)

但这在返回的列表中给了我两个额外的空字符串:
time_info=['', '20111007T084734', '20111008T023142', '']

如何仅获取两个时间戳信息?即我想要:
time_info=['20111007T084734', '20111008T023142']

最佳答案

不要使用re.split(),请使用正则表达式groups()/Match对象的SRE_Match方法。

>>> f = '000014_L_20111007T084734-20111008T023142.txt'
>>> time_info = re.search(r'[LU]_(\w+)-(\w+)\.', f).groups()
>>> time_info
('20111007T084734', '20111008T023142')

您甚至可以命名捕获组并在字典中检索它们,尽管您使用的是groupdict()而不是groups()。 (这种情况下的正则表达式模式类似于r'[LU]_(?P<groupA>\w+)-(?P<groupB>\w+)\.')

09-16 06:04