如何使用Python正则从JSON字段提取时间并忽略时间内部的空格
正则调整方案
你只需要修改匹配规则即可,无需全局替换空格,调整后的正则表达式为:\d{1,2}(?:[:.]\s?\d{2})?
改动说明
- 在原有的时间分隔符
[:.]后新增\s?规则,可匹配冒号/点与分钟数字之间0个或1个空格,刚好覆盖14: 30这类带空格的时间格式,不会匹配到其他无关位置的空格,不会破坏普通文本内容 - 用非捕获组
(?:)将「分隔符+分钟」部分包裹,后加?表示该部分可选,既可以匹配带分钟的时间格式,也可以匹配纯小时的整点数字 - 分钟部分仅匹配2位数字,不会误提取周六字段中
1600.0000这类无效时间内容
效果验证
拿周五的时间字符串10 - 13 + 14: 30 - 18.30测试,提取结果为:['10', '13', '14: 30', '18.30'],完全符合你要求的第一步提取结果。
完整代码示例
for day in row['opening_hours']: time_list = re.findall(r'\d{1,2}(?:[:.]\s?\d{2})?', row['opening_hours'][day]) # 此处可继续添加你的标准格式转换逻辑
内容的提问来源于stack exchange,提问作者sandeepsinghnegi
相关产品推荐
相关产品推荐

