0

いくつかの方法があることは承知していますが、どの方法が最適かについてご意見をお聞かせいただければ幸いです。

次のような電話のストップウォッチ アプリケーションから出力された .csv があります。

No.,Split time,,
1,+03:16.110,,
2,+12:23.120,,
3,+15:36.187,,
4,+16:56.487,,
5,+19:30.488,,
6,+20:01.621,,
 [...]
37,+53:01.921,,
38,+53:39.738,,
39,+53:40.241,,
40,+01:06.849,,
41,+01:16.442,,

ストップウォッチのタイムコードを時間:分:秒:フレーム形式に変更し、列見出しを削除し、追加情報を追加し、時間のロールオーバー (行 40 以降) を考慮する必要があります。

したがって、出力は次のようになります。

cut_v01 00:03:16:00 V4  black                  
cut_v01 00:12:23:00 V4  black                  
cut_v01 00:15:36:00 V4  black                  
cut_v01 00:16:56:00 V4  black                  
cut_v01 00:19:30:00 V4  black                  
cut_v01 00:20:01:00 V4  black                  
 [...]         
cut_v01 00:53:01:00 V4  black                  
cut_v01 00:53:39:00 V4  black                  
cut_v01 00:53:40:00 V4  black                  
cut_v01 01:01:06:00 V4  black                  
cut_v01 01:01:16:00 V4  black                  

これを行う最も効率的な方法は何でしょうか?

4

1 に答える 1

0

理解した -

import string, sys, os

def convert_stopwatch(in_filename): 
   new_filename=in_filename.replace("Stopwatch", "Timecode")

   SW_lines=open(in_filename,'Ur').readlines() 
   timecode=open(new_filename, 'w') 

   previous_minutes = 0  
   hours = 0

   for SW_line in SW_lines:
            plus_pos = SW_line.find("+")      
            if plus_pos > -1: 
                dot_pos = SW_line.find(".")
                SW_time = SW_line[plus_pos + 1:dot_pos] 

                minutes = int(SW_time.split(":")[0]) 
                if minutes < previous_minutes: 
                    hours = hours + 1
                previous_minutes = minutes

                timecode.write("cut_v01 %02d:%s:00 V4 black\n" % (hours,SW_time) ) 

   print "Timecode file(s) successfully created:\n %s\n\n" % (new_filename) 

for root, dirs, files in os.walk(os.getcwd()): 
SW_file=""
for filename in files:
   if (filename.startswith("Stopwatch")): 
      if (filename.endswith(".csv")): 
         convert_stopwatch(os.path.join(root, filename))
于 2013-02-14T02:27:38.347 に答える