我要从以下行中提取日期和时间,包括AM / PM。 但是会跳过DateTime的时间部分。
6/1/2018 12:01:11.490 AM HEP.U02.OIL.GOV.P2_RUN <Unit #2>No.2 oil pump runing On "
p=[]
xx = "6/1/2018 12:01:11.490 AM HEP.U02.OIL.GOV.P2_RUN <Unit #2>No.2
oil pump runing On "
new=re.split(r'\s',xx)
print(new)
p.append(new.pop(0))
p.append(new.pop(1))
print(p)
答案 0 :(得分:1)
否,这里有time
部分,问题是pop
,正则表达式很好,可以通过运行下面的源代码看到(不需要pop
这种情况下tbh):
pop
):import re
xx = (
"6/1/2018 12:01:11.490 AM HEP.U02.OIL.GOV.P2_RUN <Unit #2>No.2 oil pump runing On"
)
new = re.split(r"\s", xx)
print(new[:3])
预期返回的结果:
['6/1/2018', '12:01:11.490', 'AM']
当您pop
元素从列表中删除时。删除0
元素('6/1/2018'
),新的0
元素成为缺少的日期,然后弹出第一个元素,它实际上是AM
。 / p>
通过弹出窗口,您将获得全部三个(假设new
已像以前一样创建):
for _ in range(3):
print(new.pop(0))
答案 1 :(得分:0)
我对regex并不擅长,当然有一定的空间可以加强此regex,但作为第一个步骤,假设您的datetime字符串具有固定格式。它不验证日期。
import re
xx = "6/1/2018 12:01:11.490 AM HEP.U02.OIL.GOV.P2_RUN <Unit #2>No.2 oil pump runing On "
p1 = re.compile('(?:\d{1,2}\/){2}\d{4}\s+(?:\d{2}:){2}\d{2}\.\d{3}\s+[AaPp][Mm]')
p = re.findall(p1, xx)
print(p)