Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mencari dan Mengganti Teks dengan Cekap dalam Fail Menggunakan Python 3?

Bagaimanakah Saya Boleh Mencari dan Mengganti Teks dengan Cekap dalam Fail Menggunakan Python 3?

Barbara Streisand
Barbara Streisandasal
2024-12-28 18:44:18991semak imbas

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

Cari dan Gantikan Teks dalam Fail dengan Python 3

Dalam Python 3, anda boleh mencari dan menggantikan teks dalam fail menggunakan pelbagai kaedah. Satu pendekatan biasa digambarkan dalam kod yang disediakan.

Analisis Kod

Kod yang anda berikan membaca teks untuk mencari dan menggantikan serta laluan fail daripada pengguna. Ia kemudian membuka fail untuk membaca dan menulis, mencari kemunculan teks carian menggunakan input fail, menggantikannya dengan teks gantian dan menulis kandungan yang diubah suai pada fail.

Isu dengan Mengganti 'abcd ' oleh 'ram'

Isu yang dilaporkan dengan hasil penggantian berlaku kerana rentetan 'abcd' lebih panjang daripada 'ram'. Apabila 'abcd' digantikan dengan 'ram', aksara tambahan pada penghujung teks yang diganti tidak akan dialih keluar, mengakibatkan "aksara sampah" yang anda perhatikan.

Penyelesaian

Untuk menyelesaikan isu ini, anda harus mengambil kira potensi perbezaan panjang antara rentetan carian dan penggantian. Berikut ialah versi kod yang dikemas kini yang sepatutnya berfungsi dengan betul:

import os
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:
        tempFile.write(line.replace(textToSearch, textToReplace))
    else:
        tempFile.write(line)

tempFile.close()

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

Pelaksanaan Kemas Kini

Daripada menggantikan semua kejadian textToSearch dengan textToReplace, kod yang dikemas kini menggunakan baris .replace() dalam gelung, memastikan bahawa hanya kejadian khusus yang ditemui diganti. Pengubahsuaian ini menghapuskan baki aksara sampah.

Penyelesaian Cekap Memori

Kod ini menganggap bahawa fail itu sesuai sepenuhnya dengan memori. Jika fail terlalu besar, pertimbangkan untuk membaca dan menulis pada fail secara berperingkat untuk mengelakkan masalah ingatan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari dan Mengganti Teks dengan Cekap dalam Fail Menggunakan Python 3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn