使用python

时间:2017-03-29 15:05:29

标签: python regex

所以我正在读取.avi文件并将其索引存储到列表中。 每个元素对应于索引电影帧。 我正在编写一个脚本来删除列表中以:

开头的所有事件
  

00dc \ X10 \ X00 \ X00 \ X00

这是代码的简短版本

   list = ['00dc\x00\x00\x00\x00\x025,\x00\x08\x19\x00\x00',
        '00dc\x00\x00\x00\x00\x12N,\x00\x0b6\x00\x00',
        '00dc\x10\x00\x00\x00&\x84,\x00\x95D\x01\x00',
        '00dc\x00\x00\x00\x00\xc4\xc8-\x00\xe0l\x00\x00',
        '00dc\x00\x00\x00\x00\xac5.\x00t.\x00\x00']

    regex1 = b'00dc\x10\x00\x00\x00.{8}'
    newlist = [x for x in list if x != regex1]

Aaand它没有做任何事情,当我预期第三个元素被弹出时,列表保持不变。

我认为它不匹配任何东西,因为即使我将regex1设置为:

  

B '*'

列表保持不变。无法确定问题的来源。感谢

1 个答案:

答案 0 :(得分:1)

Python并不适用于内置的正则表达式。您需要导入regex模块。

import re
list = ['00dc\x00\x00\x00\x00\x025,\x00\x08\x19\x00\x00',
        '00dc\x00\x00\x00\x00\x12N,\x00\x0b6\x00\x00',
        '00dc\x10\x00\x00\x00&\x84,\x00\x95D\x01\x00',
        '00dc\x00\x00\x00\x00\xc4\xc8-\x00\xe0l\x00\x00',
        '00dc\x00\x00\x00\x00\xac5.\x00t.\x00\x00']

pattern = re.compile(b'00dc\x10\x00\x00\x00.{8}')
newlist = [x for x in list if not re.match(pattern,x)]

输出:

['00dc\x00\x00\x00\x00\x025,\x00\x08\x19\x00\x00', '00dc\x00\x00\x00\x00\x12N,\x00\x0b6\x00\x00', '00dc\x00\x00\x00\x00\xc4\xc8-\x00\xe0l\x00\x00', '00dc\x00\x00\x00\x00\xac5.\x00t.\x00\x00']