我有以下显示此模式的文件名:
000014_L_20111007T084734-20111008T023142.txt
000014_U_20111007T084734-20111008T023142.txt
...
Run Code Online (Sandbox Code Playgroud)
我想在第二个下划线'_'
之前和之前提取中间的两个时间戳部分'.txt'
.所以我使用了以下Python正则表达式字符串拆分:
time_info = re.split('^[0-9]+_[LU]_|-|\.txt$', f)
Run Code Online (Sandbox Code Playgroud)
但是这在返回的列表中给了我两个额外的空字符串:
time_info=['', '20111007T084734', '20111008T023142', '']
Run Code Online (Sandbox Code Playgroud)
我如何只获得两个时间戳信息?即我想:
time_info=['20111007T084734', '20111008T023142']
Run Code Online (Sandbox Code Playgroud)
Ell*_*lle 20
我不是Python专家,但也许你可以从列表中删除空字符串?
str_list = re.split('^[0-9]+_[LU]_|-|\.txt$', f)
time_info = filter(None, str_list)
Run Code Online (Sandbox Code Playgroud)
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')
Run Code Online (Sandbox Code Playgroud)
您甚至可以命名捕获组并在dict中检索它们,尽管您使用groupdict()
而不是groups()
为此.(这种情况的正则表达式就像这样r'[LU]_(?P<groupA>\w+)-(?P<groupB>\w+)\.'
)
归档时间: |
|
查看次数: |
19477 次 |
最近记录: |