PDA

Просмотр полной версии : Помогите с простеньким парсером плиз!



Vert
17.08.2008, 13:43
нужен простенький парсер, который в файле переведет все даты на 42 секунды назад.
Пример дат в файле:


1
00:01:03,000 --> 00:01:06,100
-- 3 of a kind.
-- That's it? 3 guys?

2
00:01:06,200 --> 00:01:09,700
2 guys on the roof
Every guys gets a share, 5 Shares is plenty


Нужно получить:



1
00:00:21,000 --> 00:00:24,100
-- 3 of a kind.
-- That's it? 3 guys?

2
00:00:24,200 --> 00:00:27,700
2 guys on the roof
Every guys gets a share, 5 Shares is plenty

homo ludens
17.08.2008, 14:42
#!/bin/bash
perl -e 'while(<>) { s{(\d\d):(\d\d):(\d\d),(\d\d\d)} { my $t=$1*3600+$2*60+$3+24*3600-42; sprintf "%02d:%02d:%02d,%03d",(($t/3600)%24),(($t/60)%60),($t%60),$4;}ge; print }'



имхо должно работать

хотя ты бы уточнял на каком языке надо, а то ответят добрые люди на BrainFuck'е :-)

Яр
17.08.2008, 17:57
Вариант на python %)



from __future__ import with_statement
from datetime import datetime, timedelta, MINYEAR
import re
import sys

DELTA = 42

r = re.compile("((\d\d):(\d\d):(\d\d),(\d\d\d))")
for line in sys.stdin.readlines():
fa = r.findall(line)
if (fa):
for m in fa:
t = datetime(MINYEAR,1,1,int(m[1]),int(m[2]),int(m[3]),int(m[4])) - timedelta(0,DELTA)
line = line.replace(m[0], "%02d.%02d.%02d,%03d"
% (t.hour, t.minute, t.second, t.microsecond))
print line,


Под виндой может ругаться при < из файла.

Vert
17.08.2008, 17:57
#!/bin/bash
perl -e 'while(<>) { s{(\d\d):(\d\d):(\d\d),(\d\d\d)} { my $t=$1*3600+$2*60+$3+24*3600-42; sprintf "%02d:%02d:%02d,%03d",(($t/3600)%24),(($t/60)%60),($t%60),$4;}ge; print }'



имхо должно работать

хотя ты бы уточнял на каком языке надо, а то ответят добрые люди на BrainFuck'е :-)

Спасибо! а можно отпарсеный файлик, если не затруднит?

homo ludens
17.08.2008, 20:23
лови.
Только он не с 00:00:00 теперь начинается, а с 23:59:28.

Vert
17.08.2008, 21:53
спасибо!
оффтоп: фокус не удался. Субтитры сначала идут вровень, потом оттормаживаются.. Буду ждать русского релиза фильма.

Lexis
19.08.2008, 22:58
Скачай прогу dsrt. Она специально для работ с субтитрами сделана. Сам пользуюсь часто (анимешникам в подсобку:) ). Если надо отдельную часть подправить, то выделяешь начальную и последнюю фразу, а затем сдвигаешь. В общем разберешься, прога простенькая