如何从字符串中以秒为单位获取时间增量?示例:+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 包获得您正在寻找的功能。
我有这样的时间增量数据:
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 包获得您正在寻找的功能。