Python中re.sub无法删除TXT文件内[]包裹内容的问题求助
排查思路
- 文件打开模式错误:
w+模式打开文件时会直接清空原有内容,此时f.read()读不到任何数据,后续正则处理的是空字符串,写入后相当于没做有效修改。正确做法是先以r模式读取文件内容,处理完再用w模式写入;或者用r+模式,但要注意操作文件指针。 - 正则匹配逻辑问题:你用的
\[.*\]是贪婪匹配,会把从第一个[到最后一个]之间的所有内容一次性匹配删除(比如[verse1]歌词[verse2]会被全删),而非逐个删除每个括号包裹的内容。换成非贪婪模式\[.*?\]试试。 - 路径转义问题:Windows路径里的
\需要转义,你写的"C:\code\code\Music Bot\lyrics.txt"中,\c这类字符会被解析为转义序列,导致实际打开的不是目标文件。改用原始字符串r"C:\code\code\Music Bot\lyrics.txt"或者把\替换成\\。 - 文件指针位置问题:如果用
r+模式,读取内容后文件指针会停在末尾,直接写入会追加到文件末尾而不是覆盖原有内容。需要在读取后调用f.seek(0)回到文件开头,再用f.truncate()清空内容后写入。 - 权限或占用问题:检查是否有该文件的写入权限,或者文件是否被其他程序(比如文本编辑器)占用,导致写入操作未生效。
内容的提问来源于stack exchange,提问作者Isohel
相关产品推荐
相关产品推荐

