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