Aufsteigende Zahlen alle x Zeilen und Batch-Änderungszeitstempel für die .srt-Datei

372
unironicScriptKiddy

Ich habe mit dem Konvertieren einer Datei im folgenden Format zu kämpfen

0:01:00.340 --> 0:01:01.380 ***subtitle text***  0:01:01.380 --> 0:01:02.390 ***subtitle text*** 

im Standardformat .srt, dh:

1 0:01:00,320 --> 0:01:01,360 ***subtitle text***  2  0:01:01,360 --> 0:01:02,320 ***subtitle text*** 

Prost im Voraus!

BEARBEITEN: Ich habe Dinge über meinen Fortschritt vor LotPings Antwort entfernt.

1
Bitte nicht crosspost: https://stackoverflow.com/q/49929871/372239 Toto vor 5 Jahren 1
Entschuldigung, zum ersten Mal fragen und nach Zeit drängen. Wenn Cross-Postings gegen die Regeln verstößt, lösche ich gerne eine der beiden Fragen unironicScriptKiddy vor 5 Jahren 0
Andere Post wurde gelöscht unironicScriptKiddy vor 5 Jahren 0

2 Antworten auf die Frage

2
LotPings

Mein Lieblingseditor Textpad kann dies, ansonsten benötigen Sie ein Vbscript oder eine Powershell.

Bearbeiten Die RegEx wuchs Komplex mit drei Gruppen, die die Regionen zu kontrollieren um die Punkte / Kommata

Suche: ^(\d:\d:\d)\.(\d[-> ]+\d:\d:\d)\.(\d)
Ersetzen:\i\n$1,$2,$3

Was das RegEx macht:

  • Suche nach einem h:mm:ssMuster, in dem \deine Ziffer steht und ein Quantifizierer ist, was ein bis zwei Vorkommen bedeutet. Ist nur zwei mal usw.
  • [-> ]+ist eine Klasse einer der Zeichen innerhalb des [ ]folgenden Quantifizierers +, wobei mindestens eine, aber so viele wie möglich der Klassenzeichen angegeben werden.
  • ^ verankert am Zeilenanfang und
  • (gruppen) dies
  • gefolgt von einem wörtlichen Punkt

Dies wird ersetzt durch

  • das \iInkrement speziell für TextPad
  • eine \nneue Zeile
  • und das gruppierte $1Muster aka Zeit
  • und ein wörtliches Komma.

Eine wertvolle Quelle für RegEx ist Regular-Expressions.info
und zum interaktiven Testen eines RegEx oder RE verwenden Sie RegEx101.com


Das obige RE in RegEx101.com ohne das \i-Feature

Interessant, also haben Sie es geschafft, die Punkte in Kommas umzuwandeln? Ich werde das kopieren und in Notepad ++ 's find & replace einfügen und sehen, ob es hilft. Macht es Ihnen etwas aus, schnell zu erklären, was Ihre Operatoren für ^, \ d, \ i und $ 1 tun? Prost unironicScriptKiddy vor 5 Jahren 0
Nein, habe ich nicht, aber es ist kein Problem, mit dem RE zu fangen. Es tut mir leid, aber npp unterstützt das Ersetzen von \ i nicht. Ich werde das Bild aktualisieren. LotPings vor 5 Jahren 0
Vielen Dank für das Update, Sie erwähnen, dass RegEx die Recherche wesentlich vereinfacht hat! Beim Kopieren Ihres Ausdrucks in TextPad 8 wird das erste Kommando h: mm: ss aktualisiert. Der zweite Zeitstempel wird jedoch nicht aktualisiert (der nach "->"). unironicScriptKiddy vor 5 Jahren 0
Siehe die aktualisierte RegEx und den Ersatz LotPings vor 5 Jahren 0
Perfekt! Als beantwortet markiert, vielen Dank. Haben Sie etwas dagegen, den Teil "\ d [->] +" des Ausdrucks zu erklären? Ich verstehe jetzt alles andere, sehr interessantes Zeug unironicScriptKiddy vor 5 Jahren 0
Nochmal die Antwort bearbeitet, du kannst auch abstimmen ;-) LotPings vor 5 Jahren 0
Prost, habe es getan, aber meine Vertretung ist unter 15, also ist sie registriert, aber nicht öffentlich gezeigt. Ich habe vor, hier viel aktiver zu sein, sollte aber auftauchen, wenn ich einige Fragen beantworte, die ich denke! unironicScriptKiddy vor 5 Jahren 0
Eine wertvolle Quelle für RegEx ist [Regular-Expressions.info] (http://www.regular-expressions.info/) und das interaktive Testen von RegEx oder RE ist [RegEx101.com] (http://regex101.com) /) LotPings vor 5 Jahren 0
Beides mit Lesezeichen versehen :) Ich fand auch http://johnbokma.com/textpad/textpad-reference.pdf. Wenn ich weitere Probleme mit dieser srt-Datei habe, sollte ich eine andere Frage stellen oder diese aktualisieren? unironicScriptKiddy vor 5 Jahren 0
Stellen Sie neue Fragen, um ein breiteres Publikum zu erreichen. Kommentare hier werden meine Aufmerksamkeit erregen - aber ich bin nicht immer online. LotPings vor 5 Jahren 0
0
dbenham

Für eine Befehlszeilenlösung würde ich JREPL.BAT verwenden - ein reines Skriptprogramm (JScript / batch) für reguläre Ausdrücke, das ab XP auf jedem Windows-Computer ausgeführt werden kann, ohne dass eine Drittanbieter-Exe-Datei erforderlich ist.

Im Folgenden wird ^Zeilenfortsetzung verwendet, um das Scrollen zu vermeiden, es könnte jedoch alles in einer Zeile stehen.

jrepl "^(\d+:\d\d:\d\d)\.(\d --> \d+:\d\d:\d\d)\.(\d)"^ "$txt=++n+'\r\n'+$1+','+$2+','+$3" /jq /jbeg "var n=0" /f test.txt /o - 

Verwenden Sie CALL JREPL, wenn Sie den Befehl in ein Batch-Skript einfügen.

Wie ist das Einfügen einer inkrementellen Nummer? Toto vor 5 Jahren 0
@Toto - Das war es nicht - ich habe diese Anforderung komplett verfehlt. Ich habe die Antwort aktualisiert, um die steigenden Zahlen einzugeben. dbenham vor 5 Jahren 0