2013-05-10 36 views
0

我有SRT格式 我有字幕功能如何搭配使用Python中的正则表达式号码列表

def clearSubtitles(subtitles): 
     for i in subtitles: 
      if re.search("^\r$", i) != None : 
        subtitles.remove(i) 
      if re.search("^\d+\r$", i) != None: 
        subtitles.remove(i) 

在名单上有subtitles['0\r','00:59:58,084 --> 00:59:58,888\r','Come on!\r']

我需要匹配短语中的第一个数字案例0\r^\d+\r$匹配我timewindows(00:59:58,084 --> 00:59:58,888\r) ..有人可以帮助我吗?

+1

不要在迭代它时修改列表,这会导致您跳过检查列表成员。您可以使用多种替代技术 - 如果将所有正则表达式放入单个布尔函数中,则生成器表达式可能是最简单的。 – 2013-05-10 19:51:57

+0

'^ \ d + \ r $'不应该与'timewindows'中的任何内容匹配。你做错了什么。 – Barmar 2013-05-10 19:52:02

+0

我重新编写了一个条件:'如果re.search(“^ \ r $”,i)!= None或(re.search(r“^ \ d {0,5}”,i)!= None: '但是仍然不起作用 – 2013-05-10 19:57:32

回答

1

好的,所以我想我现在明白你想要删除什么了。试试这个:

import re 

cleared_subtitles = [subtitle for subtitle in subtitles if not re.match(r'\d*\r')] 

这将建立一个新的列表,其中所有以0或更多数字开头并以\ r结尾的元素。与re.search不同,re.match要求regexp匹配整个字符串。

+0

ty工作得很好:) – 2013-05-10 20:30:26

0

所以你需要匹配一个数字的行吗?

re.search(r"^\d\r", i) 
+0

this match me 00:59:58,084 - > 00:59 :58888 \ r,但我需要匹配0 \ r – 2013-05-10 19:48:55

+0

可还850 \ r – 2013-05-10 19:49:35

+0

没有它不:http://ideone.com/X3r39J – wroniasty 2013-05-10 19:50:12

相关问题