Python应用:邪恶力量S01E09字幕时间调整


                    影片是从eMule下载的,srt是从射手网下载的。
    开始字幕还好,到了剧情正式开始的位置,发现字幕严重地延迟了,反复测试发现从5分13秒的字幕开始延迟,约延迟13秒。
    那么解决方法就是用Python来将此后的字幕时间统统减少13秒。
    本来想用Python提供的时间函数来处理,但没有发现适合的,就打算自己来计算一下,就是要考虑借位的地方。折腾了一阵,最后实现了,贴在这里,供大家参考指正


[color="#008000"]# encoding:gb2312
[color="#0000ff"]import [color="#800000"]re[color="#000000"],[color="#800000"]os
[color="#000000"]fo[color="#008080"]=[color="#808000"]file[color="#000000"](r[color="#ff00ff"]"F:\字幕\Supernatural.S01E09.HR.HDTV.AC3.5.1.XviD-CTU.gb-adjust.srt"[color="#000000"],[color="#ff00ff"]"r"[color="#000000"])
[color="#000000"]aContent[color="#008080"]=[color="#000000"]fo[color="#008080"].[color="#000000"]readlines()
[color="#000000"]fo[color="#008080"].[color="#000000"]close()
[color="#000000"]p[color="#008080"]=[color="#000000"]r[color="#ff00ff"]'(\d\d:\d\d:\d\d)(,\d{3} --> )(\d\d:\d\d:\d\d)(,\d{3})'
[color="#000000"]aContentTgt[color="#008080"]=[color="#000000"][]
[color="#0000ff"]def [color="#000000"]dbStr(_i):
        [color="#0000ff"]if [color="#000000"]_i[color="#008080"][color="#000000"]0:
                        [color="#000000"]_sTgt[color="#008080"]+=[color="#000000"]_h[color="#008080"]+[color="#ff00ff"]":"[color="#008080"]+[color="#000000"]dbStr([color="#808000"]int[color="#000000"](_m)[color="#008080"]-[color="#000000"]1)[color="#008080"]+[color="#ff00ff"]":"[color="#008080"]+[color="#000000"]dbStr([color="#808000"]int[color="#000000"](_s)[color="#008080"]-[color="#000000"]13[color="#008080"]+[color="#000000"]60)
                [color="#0000ff"]else[color="#000000"]:
                        [color="#000000"]_sTgt[color="#008080"]+=[color="#000000"]dbStr([color="#808000"]int[color="#000000"](_h)[color="#008080"]-[color="#000000"]1)[color="#008080"]+[color="#ff00ff"]":"[color="#008080"]+[color="#000000"]dbStr([color="#808000"]int[color="#000000"](_m)[color="#008080"]-[color="#000000"]1[color="#008080"]+[color="#000000"]60)[color="#008080"]+[color="#ff00ff"]":"[color="#008080"]+[color="#000000"]dbStr([color="#808000"]int[color="#000000"](_s)[color="#008080"]-[color="#000000"]13[color="#008080"]+[color="#000000"]60)
        [color="#0000ff"]else[color="#000000"]:
                [color="#000000"]_sTgt[color="#008080"]+=[color="#000000"]_h[color="#008080"]+[color="#ff00ff"]":"[color="#008080"]+[color="#000000"]_m[color="#008080"]+[color="#ff00ff"]":"[color="#008080"]+[color="#000000"]dbStr([color="#808000"]int[color="#000000"](_s)[color="#008080"]-[color="#000000"]13)
        [color="#0000ff"]return [color="#000000"]_sTgt
   
[color="#0000ff"]for [color="#000000"]ln [color="#0000ff"]in [color="#000000"]aContent:
        [color="#000000"]m[color="#008080"]=[color="#800000"]re[color="#008080"].[color="#000000"]search(p,ln)
        [color="#0000ff"]if [color="#000000"]m:
                [color="#000000"]t1,v1,t2,v2[color="#008080"]=[color="#000000"]m[color="#008080"].[color="#000000"]group(1,2,3,4)
                [color="#0000ff"]if [color="#000000"]t1[color="#008080"]