有一个文件data2.txt,里面包含若干行英文句子,编写程序删除文件中所有包含单词"bad"的行。用oythin
时间: 2023-06-16 07:08:01 浏览: 129
可以使用Python中的文件操作和正则表达式来实现这个功能。以下是一个可能的解决方案:
```python
import re
# 打开文件并读取所有行
with open("data2.txt", "r") as f:
lines = f.readlines()
# 使用正则表达式匹配包含"bad"的行
pattern = re.compile(r"\bbad\b")
filtered_lines = [line for line in lines if not pattern.search(line)]
# 将过滤后的行写回文件
with open("data2.txt", "w") as f:
f.writelines(filtered_lines)
```
解释:
1. 使用`with open()`语句打开文件,这样可以自动关闭文件,避免资源泄漏。
2. 使用`readlines()`方法读取所有行,并将它们存储在一个列表中。
3. 使用正则表达式`\bbad\b`匹配包含完整单词"bad"的行,其中`\b`表示单词边界。`pattern.search(line)`返回匹配结果,如果匹配成功,`search()`方法返回一个`Match`对象,否则返回`None`。
4. 使用列表推导式过滤掉包含"bad"的行,生成一个新的列表`filtered_lines`。
5. 使用`writelines()`方法将过滤后的行写回文件。注意,这里使用`with open()`语句打开文件时,将文件模式设为`"w"`,表示以写入模式打开文件,这将清空文件内容。如果希望在原始文件中追加过滤后的行,可以将文件模式设为`"a"`。