如何从字符串中以秒为单位获取时间增量?示例:+414 00:45:41.004000

How to get timedelta in seconds from a string? Example: +414 00:45:41.004000

我有这样的时间增量数据:

time_delta = '+414 00:45:41.004000'

因此,这些值是字符串,格式为 ddd hh:mm:ss.f。我现在想让这个增量达到秒。我尝试使用 .total_seconds() 但它没有用。

我怎样才能实现我想要做的事情?

如果你总是假设相同的输入格式,你可以建立一个函数如下(结果用一个简单的例子来检查):

import datetime as dt

def parseTimeDelta(time_delta_str):
     splitted = time_delta_str.split(' ')
     day_part = int(splitted[0][1:])
     time_part = dt.datetime.strptime(splitted[1], "%H:%M:%S.%f")
     delta = dt.timedelta(days=day_part, hours=time_part.hour, minutes=time_part.minute, seconds=time_part.second,microseconds=time_part.microsecond)
     return delta.total_seconds()

time_delta = '+414 00:45:41.004000'
parseTimeDelta(time_delta)

可以用 pandas library

import pandas as pd  
  
# Create the Timedelta object  
td = pd.Timedelta('3 days 06:05:01.000000111')  
  
print(td)  
  
print(td.seconds)

不幸的是,我们无法直接使用格式化字符串创建时间增量,但我们可以使用正则表达式获得类似的效果,然后将解析的值解压缩到时间增量中。

import re
import datetime

# Create parser for your time format with named groups that match timedelta kwargs
time_parser = re.compile(r"\+(?P<days>\d+)\s+(?P<hours>\d{2}):(?P<minutes>\d{2}):(?P<seconds>\d{2})\.(?P<microseconds>\d+)")

# Get the values from your example string
regex_match = time_parser.match("+414 00:45:41.004000")
time_dict = regex_match.groupdict()

# Convert the time values to integers from strings
timedelta_kwargs = {k: int(v) for k, v in time_dict.items()}

# Make a time delta object
delta = datetime.timedelta(**timedelta_kwargs)

# Get total seconds
delta_in_seconds = delta.total_seconds()

将其组织成一些功能,您将通过标准 python 包获得您正在寻找的功能。