2017-03-29 5 views
0

私は.aviファイルを読んでいて、そのインデックスをリストに保存しています。 各要素はインデックスムービーフレームに対応します。 私はで始まる、リスト内のすべてのオカレンスを削除するには、スクリプトに取り組んでいます:リストの中での出現をpythonの正規表現で削除する

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は何もしません。リストは、3番目の要素がポップアウトされると予想されたときも同じままです。

私は私がregex1を設定した場合でもので、それは何も一致するとは思わない '*'

B

リストは同じまま。問題がどこから来ているのか把握することができません。ありがとう

答えて

1

Pythonはregexビルトインでは動作しません。 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'] 
+0

感謝!私は再インポートした、ちょうど完全に私はコンパイルと一致する必要があります忘れて:) – Asymetr

関連する問題