我正在使用以下代碼使用RegEx將我的輸出打印到txt文件。不過我總是收到此錯誤信息:將RegEx寫入txt文件
File "C:\lib\re.py", line 213, in findall
return _compile(pattern, flags).findall(string)
類型錯誤:預期字符串或字節狀物體
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.compile(r'RegEx',re.I | re.S)'代替're.findall(r'RegEx',re.I | re.S)''。您必須有意在從「contents」中提取某些內容之前編譯正則表達式。 –
仍在我的代碼行「out.write()」上收到錯誤消息。 TypeError:write()參數必須是str,而不是_sre.SRE_Pattern –
是的,因爲現在'extract'是一個正則表達式對象。你需要在那裏寫出re.findall的結果。對於re.findall(提取,內容)中的x:out.write(x)'或如果在模式中有多個捕獲組,則對該元組進行連接。 –