我有以下显示此模式的文件名:
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']
Ell*_*lle 20
我不是Python专家,但也许你可以从列表中删除空字符串?
str_list = re.split('^[0-9]+_[LU]_|-|\.txt$', f)
time_info = filter(None, str_list)
JAB*_*JAB 15
不要使用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')
您甚至可以命名捕获组并在dict中检索它们,尽管您使用groupdict()而不是groups()为此.(这种情况的正则表达式就像这样r'[LU]_(?P<groupA>\w+)-(?P<groupB>\w+)\.')
| 归档时间: | 
 | 
| 查看次数: | 19477 次 | 
| 最近记录: |