我有一个包含两种不同类型的日期/时间戳的文件。首先,我的日期/时间戳格式如下:
DATE : Fri, 20 Apr 2012 09:15:17 -0700 (PDT)
其次,我的时间戳格式如下:
12:24 PM
我写了两个正则表达式模式来处理这个问题:
full_pattern = re.compile('\w{3,4}\W\s\w{3}\s\d{4}\s\d\d:\d\d:\d\d')
time_pattern = re.compile(' \d:\d\d\s[\w]{2}')
这些是对话,所以我正在寻找一个输出,其中包含对话开始的日期和时间,然后是对话中每个项目的时间戳。其最终应用是在每次日期和时间匹配时使用 Arduino 微控制器启动某些东西(即:是 4 月 30 日和下午 1:01 吗?当时有消息吗?是的?好的,启动)。
我有两个问题:
第一个模式(“full_pattern”)没有返回任何东西,我不知道为什么。我需要解决完整的问题吗?(包括“日期”位)?
我如何一起使用这些?所以正则表达式找到第一个日期/时间戳,然后打印出时间戳,找到下一个日期/时间戳,然后打印出时间戳。像这样:
2012 年 4 月 20 日星期五 11:01:17 上午 11:01 上午 11:03
2012 年 4 月 20 日星期五 09:15:17 晚上 9:15 晚上 9:17
请注意:日期/时间戳为军用时间,其他为 AM/PM
我试过像这样管道它:
re.findall(pattern1 | pattern2, string)
但它不喜欢那样。我还尝试在 for 循环中同时运行它们,如下所示:
for line in string:
pattern1 = re.compile('\w{3,4}\W\s\w{3}\s\d{4}\s\d\d:\d\d:\d\d')
pattern2 = re.compile(' \d:\d\d\s[\w]{2}')
re.findall(pattern1, string)
re.findall(pattern2, string)
但这导致了所有 pattern2 的无限循环(可能不是无限的,绝对比我需要的要多)。
任何帮助将不胜感激,谢谢!