gpt4 book ai didi

python - 用可选模式替换正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:16 25 4
gpt4 key购买 nike

我想将时间分隔符从法语方式转换为更标准的方式:

  • “17:30”变为“17:30”
  • “9h”变成“9:00”

使用正则表达式我可以将 17h30 转换为 17:30 但我没有找到将 9h 转换为 9 的优雅方法:00

这是我到目前为止所做的:

import re
texts = ["17h30", "9h"]
hour_regex = r"(\d?\d)h(\d\d)?"
[re.sub(hour_regex, r"\1:\2", txt) for txt in texts]
>>> ['17:30', '9:']

我想做的是“如果\2 没有匹配到任何东西,就写 00”。

PS:当然我可以使用更详细的正则表达式,如“([12]?\d)h[0123456]\d”,以便在匹配时间时更加精确,但这不是这里的重点。

最佳答案

Effectively re.compile 函数和 or 条件:

import re

texts = ["17h30", "9h"]
hour_regex = re.compile(r"(\d{1,2})h(\d\d)?")
res = [hour_regex.sub(lambda m: f'{m.group(1)}:{m.group(2) or "00"}', txt)
for txt in texts]
print(res) # ['17:30', '9:00']

关于python - 用可选模式替换正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58918928/

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