Pythonの正規表現マッチのファイルのファイルの一覧としては、エラー)

StackOverflow https://stackoverflow.com/questions/2344193

  •  23-09-2019
  •  | 
  •  

質問

私は利用しようと、regex Python合わせのファイルが保存され、文字列としての家"/volumes/映像/foo/bar.mov")へのログファイルを作成したリストのファイルです。しかしスクリプトを実行しているわけで、なぜならば私はこのエラー: sre_constants.error: unbalanced parenthesis.このコードを使用しています

ファイルを読み取る:

theLogFile = The_Root_Path + ".processedlog"
if os.path.isfile(theLogFile):
        the_file = open(theLogFile, "r")
    else:
        open(theLogFile, 'w').close()
        the_file = open(theLogFile, "r")
    the_log = the_file.read()
    the_file.close()

その内 for ループIお買い上げ時の設定で動いなを実現したこれまで掲載してこの問題の the_file 変数として文字列のリストからファイルの取得による走行を通じてフォルダとそのサブセットを飾すべてのファイル名)を利用するようにして正規表現照合するファイル名は現在のログファイル:

for the_file in filenamelist:
    p = re.compile(the_file, re.IGNORECASE)
    m = p.search(the_log)

でぶつかることから、 re.compile() コードの一部で吐出するエラーになります。合うカットは、これを使 re.search(the_file, the_log) でも吐出するエラーになります。かわからない方法をとることができると思いますかきアンバランス括弧からです。

役に立ちましたか?

解決

ゴードン、

問題はデータであることを私には思われます。あなたは、彼らが正規表現エンジンに関連するメタ文字が含まれている可能性があることを聞き入れない、正規表現の中にfilelistから未検査の文字列をコンパイルされます。

あなたのforループでは、あなたが文字列であるかを見ることができるように、(あなたが前に、ファイルオブジェクトと呼ばループイテレータとして名を再使用していることも問題ありません)re.compileへの呼び出しの前にprint the_fileを追加実際にファイルリストから来ます。それとも、より良いまだ、re.compileに渡す前にre.escapeを通じてthe_fileのすべてのインスタンスを実行します。これは通常のと同等にすべてのメタ文字に変わります。

他のヒント

ここで、正規表現のパターンがありますか?あなたは、ファイル名を使用しようとしている他のファイルを検索するためのパターンとして、一つのファイルに含まれていますか?もしそうなら、あなたは以下のようにいろいろ書いてthe_fileを通じてのステップになるでしょう。

for the_pattern in the_file:
    p = re.compile(the_pattern, re.IGNORECASE)
    m = p.search(the_log)
    ...

Pythonのre.compileドキュメントに、最初の引数によると、 re.compile()は、文字列として正規表現パターンでなければなりません。

しかしopen()の戻り値は、あなたがthe_fileに割り当てるとre.compile()に渡すファイルオブジェクトです....

あなたはしているが、あなたの最初のスニペットで名前the_fileへの結合は、ファイル名、あなたはのは、「文字列として保存された」と言っていても、ののファイルオブジェクトである(つまり、文字列は)実際にtheLogFileという名前ですしかし、何をREオブジェクトにトンのターンをしようとしていることのありませんtheLogFile(文字列)、それのthe_file(現在は閉鎖ファイルオブジェクト)です。この与えられた、エラーのやや風変わり(1がTypeErrorを期待する)、それはあなたが re.compileでエラーを取得することは明らかです。

the_file あるべき文字列になります。上記のコードthe_fileの返り値がオープンであるファイルオブジェクトです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top