我想解析srt字幕:
1
00:00:12,815 --> 00:00:14,509
Chlapi, jak to jde s
těma pracovníma světlama?.
2
00:00:14,815 --> 00:00:16,498
Trochu je zesilujeme.
3
00:00:16,934 --> 00:00:17,814
Jo, sleduj.每一件物品都有了结构。通过这个regexs:
答:
RE_ITEM = re.compile(r'(?P<index>\d+).'
r'(?P<start>\d{2}:\d{2}:\d{2},\d{3}) --> '
r'(?P<end>\d{2}:\d{2}:\d{2},\d{3}).'
r'(?P<text>.*?)', re.DOTALL)B:
RE_ITEM = re.compile(r'(?P<index>\d+).'
r'(?P<start>\d{2}:\d{2}:\d{2},\d{3}) --> '
r'(?P<end>\d{2}:\d{2}:\d{2},\d{3}).'
r'(?P<text>.*)', re.DOTALL)这个代码是:
for i in Subtitles.RE_ITEM.finditer(text):
result.append((i.group('index'), i.group('start'),
i.group('end'), i.group('text')))对于代码B,我在数组中只有一个项(因为贪婪的.*),而对于代码A,由于没有贪婪的.*,我有空的'text‘。
怎么治好这个?
谢谢
发布于 2010-04-11 11:15:59
文本后面是空行,或者是文件的末尾。所以你可以使用:
r' .... (?P<text>.*?)(\n\n|$)'发布于 2010-04-11 11:15:52
为什么不使用比斯特
发布于 2016-05-05 17:28:56
我对用于Python的srt库感到非常沮丧(通常是因为它们是重量级的,并且避免使用语言标准类型来支持自定义类),所以我花了大约一年的时间来开发我自己的srt库。你可以在https://github.com/cdown/srt买到。
我试着在类中保持简单和轻巧(除了核心字幕类,它或多或少只是存储SRT块数据)。它可以读写SRT文件,并将不兼容的SRT文件转换为兼容的SRT文件。
下面是一个使用示例输入的示例:
>>> import srt, pprint
>>> gen = srt.parse('''\
... 1
... 00:00:12,815 --> 00:00:14,509
... Chlapi, jak to jde s
... těma pracovníma světlama?.
...
... 2
... 00:00:14,815 --> 00:00:16,498
... Trochu je zesilujeme.
...
... 3
... 00:00:16,934 --> 00:00:17,814
... Jo, sleduj.
...
... ''')
>>> pprint.pprint(list(gen))
[Subtitle(start=datetime.timedelta(0, 12, 815000), end=datetime.timedelta(0, 14, 509000), index=1, proprietary='', content='Chlapi, jak to jde s\ntěma pracovníma světlama?.'),
Subtitle(start=datetime.timedelta(0, 14, 815000), end=datetime.timedelta(0, 16, 498000), index=2, proprietary='', content='Trochu je zesilujeme.'),
Subtitle(start=datetime.timedelta(0, 16, 934000), end=datetime.timedelta(0, 17, 814000), index=3, proprietary='', content='Jo, sleduj.')]https://stackoverflow.com/questions/2616766
复制相似问题