gpt4 book ai didi

Python使用正则表达式转换字符串

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

我想从 YouTube Data api 转换持续时间变量?
PT1M6S --> 1:06
PT38S --> 0:38
PT58M4 --> 58:04
这是我的代码:
p['duration'] 是来自 json 数据的值

duration = re.sub(r'^PT',r'',p['duration'])
duration = re.sub(r'M',r':',duration)
if (len(p['duration']) > 5 ):
duration = re.sub(r'S',r'',duration)
else:
duration = "0:" + re.sub(r'S',r'',duration)
在一个正则表达式语句中是否有一种简单的方法?
谢谢!

最佳答案

您可以使用

import re
strings = ['PT1M6S', 'PT38S', 'PT58M4']
rx = re.compile(r'^PT(?:(\d+)M)?(?:(\d+)S?)?$')
for s in strings:
print(s, ' => ', rx.sub(lambda x: f"{(x.group(1) or '00').zfill(2)}:{(x.group(2) or '00').zfill(2)}", s))
online demo .输出:
PT1M6S  =>  01:06
PT38S => 00:38
PT58M4 => 58:04
正则表达式演示是 ^PT(?:(\d+)M)?(?:(\d+)S?)?$ , 它匹配
  • ^PT - PT在字符串的开头
  • (?:(\d+)M)? - 一个可选的非捕获组匹配 1+ 位数字(将它们捕获到组 1)和一个 M字符
  • (?:(\d+)S?)? - 一个可选的非捕获组匹配 1+ 位数字(将它们捕获到组 2)和一个可选的 S字符
  • $ - 字符串的结尾。
  • 关于Python使用正则表达式转换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64938759/

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