提取更改时间字符串后面的字符串

时间:2018-05-29 06:13:49

标签: python regex

所以我一直在尝试提取文本文件中“dot”字符后面的字符串,但仅适用于遵循以下模式的行,即日期和时间之后:

2018年5月9日上午10:37•6PR,珀斯(早上好)

问题在于每一行,日期和时间都会发生变化,所以唯一常见的模式就是在“点”之前会有AM或PM。

但是,如果我搜索“AM”或“PM”,它将无法识别行,因为“AM”和“PM”附加到时间。

这是我目前的代码:

for i,s in enumerate(open(file)):
    for words in ['PM','AM']:
      if re.findall(r'\b' + words + r'\b', s):
        source=s.split('•')[0]

知道如何解决这个问题吗?谢谢。

2 个答案:

答案 0 :(得分:1)

如果您尝试提取日期时间,请尝试使用正则表达式。

<强>实施例

Content-Type

<强>输出:

import re

s = "09 May 2018 10:37AM • 6PR, Perth (Mornings)"
m = re.search("(?P<datetime>\d{2}\s+(January|February|March|April|May|June|July|August|September|October|November|December)\s+\d{4}\s+\d{2}\:\d{2}(AM|PM))", s)
if m:
    print m.group("datetime")

答案 1 :(得分:1)

我想你的正则表达式就是这里的问题。

for i, s in enumerate(open(file)):
    if re.findall(r'\d{2}[AP]M', s):
        source = s.split('•')[0]

# 09 May 2018 10:37AM