python-3.x 如何将下面的时间字符串从天转换为小时?

wxclj1h5  于 2023-01-27  发布在  Python
关注(0)|答案(2)|浏览(164)
x1 , y1 , 3 days 05:30:06.96 , 3 days 06:00:01.96
x2 , y2 , 3 days 05:30:06.96 , 3 days 06:31:16.96

我想把上面的csv转换成

x1 , y1 , 77:30:06.96 , 78:00:01.96
x2 , y2 , 77:30:06.96 , 78:31:16.96

基本上将“3天”转换为72小时,并将其添加到小时列(72+5)
在python或使用unix实用程序中,有什么好方法可以实现这一点?
看起来不像python datetime.strptime()有一个模式匹配“3天”部分的选项。

k97glaaz

k97glaaz1#

好吧,如果没有符合这种模式的实用程序,您可以很容易地自己做。我怀疑您是否可以找到一个漂亮的、漂亮的一行程序来非常容易地完成这项工作,而不需要进行深入的研究,即使这样,您也可能不会遇到它。假设有三列,用逗号分隔,你可以使用字符串的split方法把它分割成一个四列的列表。2然后你可以再次使用split并使用空格分隔符来访问第三列和第四列的组件,并自己计算。

def calc_time(time_str):
    ''' time_str in the format of: # days #:#:#.# '''
    data = time_str.split()
    # column 3 (index 2) should contain the : separated time
    time_data = data[2].split(':')

    # Multiplying days by 24 hours and adding extra hours
    total_hour = int(data[0]) * 24 + int(time_data[0])
    
    time_data[0] = str(total_hour)

    # time_data is the : separated time, which now contains the hours + days
    return ':'.join(time_data)

line = 'x1 , y1 , 3 days 05:30:06.96 , 3 days 06:00:01.96'
data = line.split(',')
# data should be a list of 4 strings now
data[2] = ' ' + calc_time(data[2])
data[3] = ' ' + calc_time(data[3])

result = ','.join(data)
3z6pesqy

3z6pesqy2#

这可能对您有用(GNU sed):

sed -E 's/ (\S+) days (..)/ $((\1*24+10#\2))/g;s/.*/echo "&"/e' file

用bash计算替换days和hours,并使用echo评估结果。

相关问题