我正在分析格式化的字符串。我需要知道有多少小时,分和秒,我检索的每个项目已经工作。你知道吗
我收到的数据格式如下,例如:
PT5H12M3S,意思是5小时12分3秒。你知道吗
但是,如果工作时间少于一小时,则不会显示:
PT12M3S,这意味着12分3秒。你知道吗
更重要的是,如果一个项目没有工作(或只有不到一分钟),数据将显示为:
PT0
如果一个项目只有完整的工作时间,它将显示为:
PT5H公司
我尝试用以下代码解析数据:
estimated = track_data['project']['estimate']['estimate'].split('PT')[1]
estimated_hours = estimated.split('H')[0]
estimated_minutes = estimated_hours.split('M')[0]
estimated_seconds = estimated_minutes.split('S')[0]
但是这个解决方案只有在数据是PT5H12M3S格式时才有效,其他格式都是错误的。例如,如果我得到数据PT5H,那么估计的小时数将是5,但是估计的分和秒数也将是5。显然这不是我们想要的。你知道吗
有没有人能指导我去哪里找?我用split尝试了一些其他的方法,但似乎不起作用,因为如果找不到'M'或'S',它只会不断重复相同的数字。你知道吗
希望这是有意义的,并提前感谢。你知道吗
可以使用正则表达式:
怎么样?你知道吗
您可以使用正则表达式和正则表达式中的组来捕获小时、分钟和秒—所有这些都是可选的。你知道吗
大致如下:
/PT(\d*)H?(\d*)M?(\d*)S?/
括号表示组。因此,您的捕获组将包含小时、分钟和秒(所有这些都是可选的)。你知道吗
但是正则表达式不是那么可读。我强烈建议尝试像Parsec这样的解析器组合库。解析器组合器更具可读性和可维护性,编写起来也很有趣。你知道吗
相关问题 更多 >
编程相关推荐