Pythonの正規表現マッチのファイルのファイルの一覧としては、エラー)
質問
私は利用しようと、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の返り値がオープンであるファイルオブジェクトです。