RegExを使用して出力をtxtファイルに出力するには、次のコードを使用しています。RegExをtxtファイルに書き込む
File "C:\lib\re.py", line 213, in findall
return _compile(pattern, flags).findall(string)
はTypeError例外:期待される文字列またはバイトのようなオブジェクト
import glob
import os
import re
def extractor():
os.chdir(r"F:\Test")
for file in glob.iglob("*.html"): # iterates over all files in the directory ending in .html
with open(file, encoding="utf8") as f, open((file.rsplit(".", 1)[0]) + ".txt", "w") as out:
contents = f.read()
extract = re.compile(r'RegEx', re.I | re.S)
if re.findall(extract, contents) is not None:
for x in re.findall(extract, contents):
out.write(x)
out.close()
extractor()
誰でもこのエラーを引き起こすもののアイデアをしかし、私は常に、このエラーメッセージが表示されますか?どうやらそれは型エラーと関係がありますか?
're.findall(r'RegEx '、re.I | re.S)'の代わりに 're.compile(r'RegEx'、re.I | re.S)'を使用してください。 'contents'から何かを抽出する前に正規表現をコンパイルする必要があります。 –
私のコード行 "out.write()"にもエラーメッセージが表示されます。 TypeError:write()引数は_sreではなくstrでなければなりません.REREPattern –
はい、 'extract'は正規表現オブジェクトなので、そこにre.findallの結果を書く必要があります。パターンに複数のキャプチャ・グループがある場合は、 're.findall(extract、contents):xはout.write(x)'で、またはタプルを連結します。 –