Автор оригинала: 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.
Вы можете связаться со мной @: