簡體   English   中英

如何使用Python在幾秒鍾內轉換數據類型(dd:hh:mm:ss)“ 1天,01:00:00”

[英]How to convert data type (dd:hh:mm:ss) “1 day, 01:00:00” in seconds using Python

我正在嘗試使用以下代碼行轉換數據:“ 1天,01:00:00”以秒為單位:

import datetime

time_1 = '1 day, 01:00:00'

h, m, s = str(time_1).split(':')
seconds = (int(datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s)).total_seconds()))
print(seconds)

但是我得到了這個錯誤:

>>> ValueError: invalid literal for int() with base 10: '1 day, 01'

我可以從變量“ time_1”中刪除“ 1 day”(但不包括天數)來得到正確的結果...

有人可以幫我嗎?

在用“:”分割之前,您需要先用逗號分割並加上結尾部分,如果不這樣做,則h將設置為"1 day, 01"

time_aux = time_1.split(',')[1]
h, m, s = time_aux.split(':')

使用split拆分您的初始字符串

result = [x.strip() for x in time.split(',')]

然后將第一項和第一個字符乘以64200,將其轉換為秒,然后像您一樣轉換小時,分鍾和秒。

seconds = (int(datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s)).total_seconds()))
total_seconds = int(result[0][1])*64200 + seconds 

您可以使用re解析時間字符串:

import datetime
import re

time_1 = '1 day, 01:00:00'

for (days, t) in re.findall(r'(?:(\d+)\s+days?)?,?\s*([\d:]+)', time_1):
    h, m, s = str(t).split(':')
    seconds = datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s)).total_seconds()
    if days:
        seconds = seconds + datetime.timedelta(days=int(days)).total_seconds()
    print(int(seconds))

打印:

90000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM