提取随时间字符串变化的字符串

2024-04-18 09:44:17 发布

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

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

2018年5月9日上午10:37•下午6点,珀斯(上午)

问题是,对于每一行,日期和时间都会发生变化,因此唯一常见的模式是在“点”之前有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]

你知道怎么解决这个问题吗?非常感谢。你知道吗


Tags: 字符串代码inforif时间模式open
2条回答

我想你的正则表达式就是问题所在。你知道吗

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

如果您试图提取datetime,请尝试使用regex。你知道吗

例如:

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")

输出:

09 May 2018 10:37AM

相关问题 更多 >