2017-07-01 15 views
1

この文字列の太字の部分が秒である場合。 00:00:00: .000ffmpegタイムスタンプ形式の文字列に秒を追加するにはどうすればよいですか?

この文字列形式にはどのように10秒を追加できますか?

00:00:00:00.000 
00:00.000 
00.000 

結果は次のようになります。

00:00:00:10.000 
00:10.000 
10.000 
+0

あなたが入力中の固定パターンを持っていません。 – Rahul

+0

's/00 \ ./ 10./g;' – melpomene

+0

@ Scripting.FileSystemObject何でもできます。私たちは方法を見つけなければなりません。答えを見てください! – void

答えて

3

re.sub

>>> import re 
>>> strings = [ 
...  '00:00:00:00.000', 
...  '00:00.000', 
...  '00.000', 
... ] 
>>> for s in strings: 
...  re.sub(r'\d+(?=\.\d+$)', lambda match: str(int(match.group()) + 10), s)       
... 
'00:00:00:10.000' 
'00:10.000' 
'10.000' 
  • re.subだけでなく、2番目のパラメータとして置換文字列を受け入れ、だけでなく、2番目のパラメータとして置換機能を受け入れることができます。
  • この関数は、一致したオブジェクトをパラメータとして受け取ります。関数の戻り値はreplacemnt文字列として使用されます。
  • \d+(?=\.\d+$)パターンは(.nnn小数部分が続いている)最後の秒の部分を一致させるために使用され
+0

いいですが、 'str(int(match.group())+ 10)、s)が何をしているのか説明できません。お願いします? – void

+0

@s_vishnu、 'match.group()'は一致した文字列部分を返します。 'int(..)+ 10'を実行して文字列を整数に変換した後、10を追加します。その後、整数を文字列に変換するために' str(..) 'を使用します。 – falsetru

+0

@s_vishnu、私は(あなたがコメントしていた)回答を更新しました。更新された部分を読むことは、その部分の意味を理解するのにも役立ちます。フィードバックいただきありがとうございます。 – falsetru

0

あなたは私の心に来て2つのオプションがあります。

  1. を増やし、その後、タイムスタンプ形式に文字列の独自のコンバータを探すか、書き込みそれを10秒後に変換します。

  2. 文字列を受け取り、それがどの形式であるかをチェックし、必要に応じて10分をシフトする独自の関数を記述します。置換機能で使用

関連する問題