ホームページ >バックエンド開発 >Python チュートリアル >Python ファイル内のテキストを効率的に検索および置換するにはどうすればよいですか?

Python ファイル内のテキストを効率的に検索および置換するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-13 02:05:13260ブラウズ

How Can I Efficiently Search and Replace Text in a Python File?

テキストの検索と置換

ファイル内のテキストの検索と置換は、プログラミングにおける一般的なタスクです。 Python では、os、sys、fileinput などのライブラリを使用してこれを実現するいくつかの方法が提供されています。

元の試行

一般的なアプローチには、ループを使用してファイル行を反復処理することが含まれます。行ごとに検索テキストをチェックし、置換テキストに置き換えます。以下に例を示します。

import os
import sys
import fileinput

print("Text to search for:")
textToSearch = input("> ")

print("Text to replace it with:")
textToReplace = input("> ")

print("File to perform Search-Replace on:")
fileToSearch = input("> ")

tempFile = open(fileToSearch, 'r+')

for line in fileinput.input(fileToSearch):
    if textToSearch in line:
        print('Match Found')
    else:
        print('Match Not Found!!')
    tempFile.write(line.replace(textToSearch, textToReplace))
tempFile.close()

input('\n\n Press Enter to exit...')

インプレース置換の問題

このアプローチは、単純な置換に適しています。ただし、置換テキストが元のテキストより長いか短い場合、問題が発生する可能性があります。たとえば、「abcd」を「ram」に置き換えると、末尾に余分な文字が残ります (「こんにちは、これは ram、こんにちは、これは ram」)。

解決策: 読み取り、変更、書き込み

これらの問題を回避するには、ファイル全体をメモリに読み取り、変更して、別の手順でファイルに書き戻すことをお勧めします。このアプローチにより、ファイル構造がそのまま維持されることが保証されます。

# Read in the file
with open('file.txt', 'r') as file:
  filedata = file.read()

# Replace the target string
filedata = filedata.replace('abcd', 'ram')

# Write the file out again
with open('file.txt', 'w') as file:
  file.write(filedata)

この方法は、大きなファイルの場合により効率的であり、書き込みプロセス中に中断が発生した場合のデータ損失を防ぎます。

以上がPython ファイル内のテキストを効率的に検索および置換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。