Рубрики
Без рубрики

Как искать и заменить строку в файл в Python?

Проблема: учитывая содержимое текстового файла. Как искать и заменить определенную строку или строку в файл? Пример: Давайте рассмотрим следующий пример. Текст в файле перед заменой строки: появилась идея объединить группу замечательных людей, чтобы увидеть, сможем ли мы стать чем-то еще. … Как искать и заменить строку в файл в Python? Прочитайте больше “

Автор оригинала: Shubham Sayon.

Проблема: Учитывая содержимое текстового файла. Как искать и заменить определенную строку или строку в файл?

Пример: Давайте рассмотрим следующий пример.

Текст в файле перед заменой строки:

Была идея собрать группу замечательных людей, чтобы увидеть, сможем ли мы стать чем-то еще. Эта линия объясняет идею инициативы Мстителями и то, что Мстители должны были быть.

Текст в файле после замены строки:

Была идея собрать группу замечательных людей, чтобы увидеть, сможем ли мы стать чем-то еще. Эта линия объясняет идею инициативы Fincters и то, что должны были быть целесообразными.

Решения:

В наших решениях, принятый во внимание файл, назван Demo.txt. и путь был упомянут как путь в моей локальной системе. При использовании кода в вашей программе, пожалуйста, замените их соответственно.

Метод 1: петля через каждую строку и используйте метод string.replace ()

Обычный/обычный способ решения нашей проблемы состоит в том, чтобы петля Через каждую строку в текстовом файле и найдите текстовый/строку, который должен быть заменен, а затем заменить его новой строкой, используя заменить () метод. Это было продемонстрировано в следующем фрагменте ниже ( Пожалуйста, следуйте комментариям для лучшего захвата в коде):

#open file in read mode
file = open("demo.txt", "r")
replaced_content = ""

#looping through the file
for line in file:
    
    #stripping line break
    line = line.strip()

    #replacing the texts
    new_line = line.replace("Avengers", "Finxters")

    #concatenate the new string and add an end-line break
    replaced_content = replaced_content + new_line + "\n"

    
#close the file
file.close()

#Open file in write mode
write_file = open("demo.txt", "w")

#overwriting the old file contents with the new/replaced content
write_file.write(replaced_content)

#close the file
write_file.close()

Метод 2: Напишите содержимое, которое нужно заменить на новый файл и заменить старый файл

Перед погружением в код важно, чтобы мы применим следующие методы в Python:

  • mkstemp () → Возвращает кортеж с файловым дескриптором и путь.
  • Открыть () → Чтобы прочитать или написать файл, вы должны открыть его, используя встроенный Python Открыть () функция. Он используется для создания файлового объекта, который затем используется для вызова других методов поддержки, связанных с ним.
  • Copymode () → Способ в Python используется для копирования битов разрешений с данного источника пути к данному пути назначения. PULTIL.COPYMODE () Метод не влияет на содержимое файла или владельца и групповой информации.
  • Переместить () → Метод в Python, который позволяет вам перемещать файлы из одного места в другое.
  • Удалить () → Метод в Python, который позволяет удалить или удалить путь к файлу.

Теперь, когда мы знаем, почему используется каждый из вышеперечисленных методов, давайте посмотрим, как работает код ( Пожалуйста, следуйте комментариям для лучшего захвата в коде):

#importing necessary functions and modules
from tempfile import mkstemp
from shutil import move, copymode
from os import fdopen, remove

#store the path of the file in a variable
path="C:\\Users\Shubham-PC\Desktop\python\method2\demo.txt"

#define the replace function
def replace(file_path, Avengers, Finxters):
    
   #Create temp file
   fd, abs_path = mkstemp()
   with fdopen(fd,'w') as new_file:
       with open(file_path,'r') as old_file:
           for line in old_file:
               new_file.write(line.replace(Avengers,Finxters))
               
   #Copy the file permissions from the old file to the new file
   copymode(file_path, abs_path)
   
   #Remove original file
   remove(file_path)
   
   #Move new file
   move(abs_path, file_path)

   
#calling the replace() method
replace(path,'Avengers','Finxters')

Способ 3: Использование fileInput.fileinput () и in-pife оператора

fileInput () → Способ в Python, который позволяет вам принять файл в качестве ввода, а затем обновлять или Добавить данные в файле.

Следующий код демонстрирует использование fileInput () Способ замены текста в файл.

import fileinput
import sys

def replace(file, searchExp, replaceExp):
   for line in fileinput.input(file, inplace=1):
       line = line.replace(searchExp, replaceExp)
       sys.stdout.write(line)
       
old_txt = "Avengers"
new_txt = "Finxters"
file = "demo.txt"
replace(file, old_txt, new_txt)

Способ 4: Используйте модуль Regex

Еще один способ решения нашей проблемы состоит в том, чтобы использовать модуль Python Regex. Приведенный ниже код использует следующие функции модуля Regex:

  • re.compile () → Используется для компиляции шаблона регулярного выражения и преобразовать его в регулярное объект выражения, который затем может использоваться для сопоставления.
  • Re.escape () → Используется, чтобы избежать специальных символов в шаблоне.

Также обратите внимание, что sub () Функция используется для замены шаблона ( мстители в этом примере) со строкой ( Fincters в этом примере) или результатом функции.

#importing the regex module
import re

#defining the replace method
def replace(filePath, text, subs, flags=0):
    
   #open the file
   with open(file_path, "r+") as file:

       #read the file contents
       file_contents = file.read()
       text_pattern = re.compile(re.escape(text), flags)
       file_contents = text_pattern.sub(subs, file_contents)
       file.seek(0)
       file.truncate()
       file.write(file_contents)

       
file_path="demo.txt"
text="Avengers"
subs="Finxters"

#calling the replace method
replace(file_path, text, subs)

Вывод

Поэтому, чтобы поискать и заменить строку в Python, вы можете либо загружать весь файл, а затем заменить содержимое в тот же файл, что и в нашем обычном методе (метод 1), либо вы можете выбрать более эффективный способ, используя менеджеры контекста Как объяснено в методе 2, или вы можете даже выбрать модуль Regex и играть с многочисленными вариантами.

Я надеюсь, что вы нашли эту статью полезную. Оставайтесь настроиться на будущие обновления!

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.

Вы можете связаться со мной @: