在 Python 中从文件中删除特定行
Python 支持和允许数据文件处理,它构成了 Python 编程语言的重要组成部分。但是,Python 中没有任何直接函数可以删除给定文件中的特定行。
本教程演示了在 Python 中从文件中删除特定行的不同方法。
可以借助几种不同的方法来实现删除特定行的任务。
在 Python 中使用行号从文件中删除特定行
方法一
如上所述,此方法利用用户指定的行号从 Python 中的特定文件中删除一行。
它使用了 for
循环、readlines()
方法和 enumerate()
方法。
让我们以一个名为 test.txt
的示例文件为例,其内容如下所述。
Hello
My name is
Adam
I am
a
good
singer
cricketer dancer
以下代码使用 enumerate()
和 readlines()
方法从 Python 中的特定文件中删除一行。
l1 = []
with open("temp.txt", "r") as fp:
l1 = fp.readlines()
with open("temp.txt", "w") as fp:
for number, line in enumerate(l1):
if number not in [4, 6]:
fp.write(line)
上面的代码进行了以下更改:
Hello
My name is
Adam
I am
good
cricketer dancer
代码说明:
-
首先,文件以
read
模式打开。 -
然后在
readlines()
函数的帮助下,将给定文件中的内容读入一个列表。 - 然后关闭文件。
-
然后再次打开文件,但这次是在
write
模式下。 -
然后,对创建的列表执行
for
循环和enumerate()
函数。 -
if
条件用于检查和选择行号。提到的行号被删除。 - 然后关闭文件。
方法二
seek()
方法也可用于执行使用行号从文件中删除行的相同任务。我们将使用上述方法中提到的同一个文件 test.txt
。
通过使用 seek()
方法,我们无需两次打开同一个文件,从而更轻松、更快捷。
以下代码使用 seek()
方法从 Python 中的特定文件中删除一行。
with open("temp.txt", "r+") as fp:
lines = fp.readlines()
fp.seek(0)
fp.truncate()
for number, line in enumerate(lines):
if number not in [4, 6]:
fp.write(line)
上面的代码进行了以下更改:
Hello
My name is
Adam
I am
good
cricketer dancer
代码说明:
-
文件以
r+
模式打开,允许读取和写入功能。 -
然后在
readlines()
函数的帮助下将文件内容读入列表。 -
然后使用
seek()
方法将指针移回列表的起点。 -
然后在
truncate()
方法的帮助下截断文件。 -
然后,对创建的列表执行
for
循环和enumerate()
函数。 -
if
条件用于检查和选择行号。提到的行号被删除。 - 文件关闭。
在 Python 中从文件中删除第一行或最后一行
为了实现此方法,我们在将文件内容写入列表时利用列表切片。
例如,我们将从上面提到的同一文件(test.txt
)中删除第一行。
以下代码从 Python 中的给定文件中删除第一行。
with open("temp.txt", "r+") as fp:
lines = fp.readlines()
fp.seek(0)
fp.truncate()
fp.writelines(lines[1:])
上面的代码进行了以下更改并提供了以下输出:
My name is
Adam
I am
a
good
singer
cricketer dancer
代码说明:
-
文件以
r+
模式打开,允许读取和写入功能。 -
借助
readlines()
函数将文件内容读入列表。 -
然后使用
seek()
方法将指针移回列表的起点。 -
然后在
truncate()
方法的帮助下截断文件。 - 然后将文件中的所有行写入一个列表,但第一行除外。这在列表切片的帮助下成为可能。
删除与给定特定文本匹配的行
当有多行包含特定文本时,可以使用此方法。然后可以删除与给定文本匹配的行。
例如,我们将从上述方法中使用的同一文件(test.txt
)中删除与给定特定文本匹配的行。
该方法利用 strip()
函数和 write()
函数来实现删除包含某些给定文本的行的任务。
以下代码删除与 Python 中给定特定字符串匹配的行。
content = "cricketer dancer"
with open("temp.txt", "w") as fp:
lines = fp.readlines()
for line in lines:
if line.strip("\n") != content:
file.write(line)
上面的代码进行了以下更改并提供了以下输出:
Hello
My name is
Adam
I am
a
good
singer
删除与给定特定单词匹配的行
类似于通过匹配整个字符串来删除一行,我们也可以尝试找到可能包含在一行中的单词,然后删除该特定行。
例如,我们将从上述方法中使用的同一文件(test.txt
)中删除与给定特定单词匹配的行。
对于这种方法,我们使用 Python 提供的 os
模块。我们还创建另一个新文件并将数据写入其中以实现此任务。
以下代码删除与 Python 中给定特定单词匹配的行。
import os
with open("temp.txt", "r") as input:
with open("bb.txt", "w") as output:
for line in input:
if "cricketer" not in line.strip("\n"):
output.write(line)
os.replace("bb.txt", "temp.txt")
上面的代码进行了以下更改并提供了以下输出:
Hello
My name is
Adam
I am
a
good
singer
在 Python 中删除给定文件中的最短行
顾名思义,此方法查找并删除给定文件的最短行。在这里,我们将使用 len()
方法来实现此任务。
例如,我们将从上述方法中使用的同一文件(test.txt
)中删除最短的行。
以下代码在 Python 中删除给定文件中的最短行。
with open("temp.txt", "r") as rf:
lines = rf.readlines()
shortest = 1000
lineToDelete = ""
for line in lines:
if len(line) < shortest:
shortest = len(line)
lineToDelete = line
with open("temp.txt", "w") as write_file:
for line in lines:
if line == lineToDelete:
pass
else:
write_file.write(line)
从 Python 中的给定特定文件中删除所有行
要在 Python 中删除特定文件的所有行,我们可以使用 truncate()
函数。此外,文件指针然后被设置回文件的开头。
以下代码从 Python 中的给定特定文件中删除所有行。
with open("temp.txt", "r") as fp:
fp.truncate()
相关文章
在 Python 中读取文件的第一行
发布时间:2023/12/24 浏览次数:156 分类:Python
-
本教程演示了如何在 Python 中读取文本文件的第一行。在 Python 中,我们有内置的函数可以处理不同的文件操作。
在 Python 中逐行读取 CSV
发布时间:2023/12/24 浏览次数:164 分类:Python
-
本文讨论了如何在 Python 中逐行读取 CSV 文件。在 Python 中,读取文件并按列打印是很常见的。但是有时逐行读取文件可能会有点混乱。
在 Python 中将浮点数写入文件
发布时间:2023/12/24 浏览次数:96 分类:Python
-
了解如何在 Python 中将浮点数写入文件。Python 使将数据写入文件成为一项无缝任务。数据以字符串的形式写入文件。
如何在 Python 中从文件读取特定行
发布时间:2023/12/24 浏览次数:76 分类:Python
-
Python 具有从文件读取特定行的不同方法,例如,小文件使用 fileobject.readlines(),重复文件使用 linecache,大文件使用 enumerate()。
Python 中的最大整数
发布时间:2023/12/24 浏览次数:54 分类:Python
-
本教程解释了在不同版本的 Python 中,最大整数值的概念。本教程将讨论不同版本 Python 中的最大整数值,以及我们如何获取它。
在 Python 字典中按值查找键
发布时间:2023/12/23 浏览次数:112 分类:Python
-
本教程演示了如何在 Python 字典中按值获取键。字典是一个键值对中的元素集合。字典中存储的元素是无序的。
在 Python 中枚举字典
发布时间:2023/12/23 浏览次数:159 分类:Python
-
本教程演示了如何在 Python 中使用带字典的枚举函数。Python 中的 enumerate() 函数返回一个枚举类型的对象,并添加一个计数器变量来迭代一个列表或其他类型的集合。
在 Python 中更改字典值
发布时间:2023/12/23 浏览次数:138 分类:Python
-
本教程演示了如何在 Python 中更改字典值。本教程将探讨 Python 字典中改变特定键值的多种方法。我们可以通过使用下面的方法来实现。
在 Python 中保存字典到文件
发布时间:2023/12/23 浏览次数:159 分类:Python
-
本教程演示了如何在 Python 中把字典保存到文件中。本教程讲解了用 Python 语言将字典保存到文件的多种方法。方法包括