0

次のようなテキストファイルがあります

00:47:12: start interaction

00:47:18: End interaction

00:47:20: Start interaction

00:47:23: End interaction

00:47:25: Start interaction

00:47:28: End interaction

00:47:29: Start interaction

00:47:31: End interaction

00:47:12:のようなファイルからタイムスタンプ値を取得し、次の即時値を00:47:18:で取得し、この場合の値の時間差を6 秒見つけ て、出力として出力したいと思います。いくつかの可能な提案があれば素晴らしいでしょう。秒の値を取得する最初の部分を実装しようとしましたが、ここで立ち往生しています。

コード:

with open('Time_delay', 'r') as time_delay:
                for line in time_delay:
                    time_stamp = re.findall(r"\:(.*?)\: ",line)
                    time_stamp = ''.join(time_stamp)
                    #time_stamp = re.findall(r"\:(.*?)\: ",str(time_stamp))
                    #time_stamp = ''.join(time_stamp)
                    print line 
                    print  str(time_stamp)

最初のre.findall版画

47:12
47:18

SOは、出力に同じ方法を使用して最後の部分のみを取得1218、この場合は減算または差を実行することを考えました。しかし、最後の部分だけを取得して計算を実行する方法を見つけることができません。

私は私の出力が欲しい

First interaction : 6 seconds
Second interaction : 3 seconds
Third interaction : 3 seconds 

等々

4

3 に答える 3

0

ソース ファイルが一貫して同じ形式である場合、つまり、コンテンツを含む行の各ペアがstart / endグループを形成している場合、これは機能します。空白行も考慮されます。

from datetime import datetime

def calcTimes(file):
    with open(file, 'r') as f:
        parsedTimeArray = [line.split(': ')[0] for line in f if len(line.rstrip('\n')) != 0]
    format = '%H:%M:%S'
    for t in range(0,(len(parsedTimeArray)-1),2):
        timeStart = datetime.strptime(parsedTimeArray[t],   format)
        timeEnd   = datetime.strptime(parsedTimeArray[t+1], format)
        print str(int((timeEnd - timeStart).total_seconds()))

calcTimes('Time_delay')

結果:

6
3
3
2
于 2014-11-25T14:22:42.217 に答える