2016-09-22 5 views
0

**問題**配列ファイル名に追加したファイルを1行ずつ検索しようとしています。filename.mxfを含む文字列を* .mxf。ファイル内の行は\ E:\ AVMedia \ filename.mxfになります。私は変数filename.mxfだけをリストにしたい(マッチング)。ワイルドカードと文字列を変数配列で検索する

## opens files in array ## 

    print name #debug# 
    file = open(os.path.join(path,filename), 'r') 
    #print file.read() 

## search for all strings containing .mxf from array ## 

## create regular expression ## 

pattern = "(*.mxf)" 

matching = [s for s in rasp if re.match(pattern, '\')] 
print matching 
+0

あなたは '(re.match 'とはどういう意味ですか? '、パターン) '? 'pattern'は最初の引数でなければならず、' '?' 'は無効な正規表現パターンです。あなたが[MCVE(最小限の完全に証明可能な例)](http://stackoverflow.com/help/mcve)を提供するなら、大きな助けになるでしょう。 –

+0

ありがとう、私はMCVEを満たすために例を編集しました。私は配列がどのように作られたかについて重要であると思った。私はre.matchを使って各行の* .mxfを検索し、\ E:\ AVMedia \ filename.mxfではなくfilename.mxfだけを表示する方法が不明です – user6705306

+0

['pattern = r" [^ \ s \ ] + \。mxf \ b "'と 're.findall'](https://ideone.com/Vu1X9u)を入力します。 –

答えて

0

あなたの試みとさまざまな問題のカップル:

  1. ワイルドカード(またはglob)パターンは正規表現と同じではありません。

    正規表現では、*は、式の前の項目の0以上と一致します。 *が式の先頭(またはサブ式のように、括弧で囲まれた部分式のように)または代替語句|が複数の部分式を区切っている場合は、特別な意味を持たず、*文字に一致します。

    pattern = "(*.mxf)" 
    

    ので、文字列リテラル*.mxfに一致する括弧で囲まれた部分式を持っている正規表現です。 *の代わりに.*を使用すると、改行文字以外の任意の数に一致させることができます。また、任意の数のパス区切り文字に一致させるには、を使用できます。

  2. re.match(pattern, '\')が違法である(\は、以下の'を脱出しますので、終端されていない文字列で終わります)。

  3. re.match(patterh, '\\')に修正しても、その都度パターンが固定文字列\と一致しています。私はあなたが実際にしたいことはpatternでの正規表現にマッチraspの各項目のリストを戻すために

    matching = [s for s in rasp if re.match(pattern, s)] 
    

    であると仮定します。

あなたの最善の解決策は、あなたのパターン本当のファイル名のグロブパターン(pattern = "*.mxf")を作成し、代わりにPythonのfnmatchパターンチェッカーを使用するために、おそらくです:

import fnmatch 
import os.path 
pattern = "*.mxf" 
matching = [os.path.basename(s) for s in rasp if fnmatch.fnmatch(s, pattern)] 
print matching 
+0

ありがとうJ earls。特に説明のために、非常に大きな助け。私はこれを正しいものとしてマークしますが、私は現在の配列でこれをどのように使うべきか分かりません。 'print matching'では' [] 'だけの出力が得られます。私はどのように配列を作ったのか見てみることができますか?私の理解はまだ非常に限られています。 – user6705306

+0

あなたの現在のコードで質問を更新してください。 –

+0

あなたの更新されたコードで新しい質問をしてください。新しい質問です。:) –

関連する問題