Pythonでファイルから行を削除する方法
- Pythonでファイルから特定の行を削除するために行番号を使用
- Pythonでファイルから最初または最後の行を削除
- 特定のテキストに一致する行を削除
- 特定の単語に一致する行を削除
- Pythonで指定されたファイルから最も短い行を削除
- Pythonで指定された特定のファイルからすべての行を削除
データファイルの操作はPythonでサポートされ、許可されており、Pythonプログラミング言語の重要な部分を形成しています。ただし、Pythonには指定されたファイルから特定の行を削除する直接的な関数はありません。
このチュートリアルでは、Pythonでファイルから特定の行を削除するための異なる方法を示します。
特定の行を削除するこのタスクは、いくつかの異なるアプローチを使用して実装できます。
Pythonでファイルから特定の行を削除するために行番号を使用
方法1
この方法は、ユーザーが指定した行番号を使用して、Pythonの特定のファイルから行を削除します。
これにはfor
ループ、readlines()
メソッド、およびenumerate()
メソッドを使用します。
以下は、ファイルの例であるtest.txt
を取り上げます。その内容は以下の通りです。
Hello
My name is
Adam
I am
a
good
singer
cricketer dancer
次のコードは、Pythonの特定のファイルから行を削除するためにenumerate()
およびreadlines()
メソッドを使用します。
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
条件は行番号をチェックおよび選択するために使用されます。指定された行番号は削除されます。- ファイルはその後閉じられます。
方法2
同じタスクを行番号を使用してファイルから行を削除するためにseek()
メソッドを利用することもできます。上記の方法で言及されているtest.txt
と同じファイルで作業します。
seek()
メソッドを使用することで、同じファイルを2回開く必要はなくなり、より簡単で高速になります。
次のコードは、Pythonの特定のファイルから行を削除するためにseek()
メソッドを使用します。
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
)から最初の行を削除します。
次のコードは、指定されたファイルから最初の行を削除します。
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()
メソッドを使用して切り詰められます。 - ファイルからすべての行が1行を除いてリストに書き込まれます。これはリストスライスを使用して実現されます。
特定のテキストに一致する行を削除
この方法は、特定のテキストを含む複数の行がある場合に利用できます。指定したテキストに一致する行を削除できます。
たとえば、上記の方法で使用されている同じファイル(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
)から最も短い行を削除します。
次のコードは、指定されたファイルから最も短い行を削除します。
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()
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn