1 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
with open(f, "rb") as infile:
infile = re.sub(r"[-()\"#@;:<>{}`+=~|.!?,]", "", infile)
outfile.write(infile.read())
首先,打開文件時(shí)使用'b'將文件內(nèi)容視為bytes對(duì)象,而不是字符串(類型str)。這不適用于作為字符串給出的正則表達(dá)式模式。所以你應(yīng)該忽略'b'. 由于其余的'r'是打開文件的默認(rèn)模式,因此您可以完全省略第二個(gè)參數(shù)open()。
接下來,您將文件對(duì)象與文件內(nèi)容混淆,并且操作順序錯(cuò)誤。
infile.read()讀取文件的內(nèi)容并將其作為字符串返回(當(dāng)省略 時(shí)'b')。該字符串可以傳遞給re.sub.
所以正確的順序是:
with open(f) as infile:
text = infile.read()
replaced_text = re.sub(r"[-()\"#@;:<>{}`+=~|.!?,]", "", text)
outfile.write(replaced_text)
添加回答
舉報(bào)