gpt4 book ai didi

python - 使用正则表达式从字符串中提取时间

转载 作者:行者123 更新时间:2023-12-03 03:40:05 29 4
gpt4 key购买 nike

我抓取了一些数据,其中一些小时的时间格式为 12 小时。该字符串如下所示:Mon - Fri:,10:00 am - 7:00 pm。所以我需要提取时间 10:00 am7:00 pm ,然后将它们转换为 24 小时格式。然后我想要制作的最终字符串是这样的:

Mon - Fri:,10:00 - 19:00

在这方面任何帮助将不胜感激。我尝试过以下方法:

import re

txt = 'Mon - Fri:,10:00 am - 7:00 pm'
data = re.findall(r'\s(\d{2}\:\d{2}\s?(?:AM|PM|am|pm))', txt)
print(data)

但是这个正则表达式和我尝试使用的任何其他正则表达式都没有完成任务。

最佳答案

您的正则表达式在前导数字之前强制使用空格,这会阻止 ,10:00 am 匹配,并且在冒号之前需要两个数字,这无法匹配 7:00 pmr"(?i)(\d?\d:\d\d (?:a|p)m)" 似乎是最精确的选项。

之后,使用 datetime.strptime 解析匹配项并使用 "%H:%M" format string 将其转换为军事数据。任何像 10:67 这样的无效时间都会引发一个很好的错误(如果您预计应该忽略字符串,请调整正则表达式以严格匹配 24-hour times )。

import re
from datetime import datetime

def to_military_time(x):
return datetime.strptime(x.group(), "%I:%M %p").strftime("%H:%M")

txt = "Mon - Fri:,10:00 am - 7:00 pm"
data = re.sub(r"(?i)(\d?\d:\d\d (?:a|p)m)", to_military_time, txt)
print(data) # => Mon - Fri:,10:00 - 19:00

关于python - 使用正则表达式从字符串中提取时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61894597/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com