如何使用Python正则表达式从字符串中提取数据?

2024-04-19 20:22:38 发布

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

我有以下格式的文件名:

INC_2AB_22BA_1300435674_218_19-May-2014_13-09-59.121._OK
INC_2EE_22RE_1560343444_119_11-Jun-2014_15-21-32.329._OK
INC_2CD_22HY_1652323334_312_21-Jan-2014_11-15-48.291._OK

我想在日期部分之前提取名称。例如,在产生_19-May-2014_13-09-59.121._OK的第一个文件中需要INC_2AB_22BA_1300435674_218之前的任何内容

我试过回溯法,但目前还不能完全理解这一点。你知道吗

基本,尝试匹配此模式_[0-9]-[aA-bB]-*


Tags: 文件名称内容文件名格式模式okjun
3条回答

如果您的格式是一致的,您可以使用以下内容。你知道吗

>>> s = 'INC_2AB_22BA_1300435674_218_19-May-2014_13-09-59.121._OK'
>>> '_'.join(s.split('_')[0:5])
'INC_2AB_22BA_1300435674_218'

你可以试试下面的代码

>>> import re
>>> s = """INC_2AB_22BA_1300435674_218_19-May-2014_13-09-59.121._OK
... INC_2EE_22RE_1560343444_119_11-Jun-2014_15-21-32.329._OK
... INC_2CD_22HY_1652323334_312_21-Jan-2014_11-15-48.291._OK"""
>>> m = re.findall(r'^.*?(?=_\d{2}-[A-Z][a-z]{2}-\d{4})', s, re.M)
>>> for i in m:
...     print i
... 
INC_2AB_22BA_1300435674_218
INC_2EE_22RE_1560343444_119
INC_2CD_22HY_1652323334_312

试试这个:

.*(?=_\d{1,2}-[a-zA-Z]{3})

它使用一个lookahead断言来表示您在那里的日期的_00-Aaa格式。你知道吗

相关问题 更多 >