Как заменить символы в файле python

Обновлено: 05.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вывод

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

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

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

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

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

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

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


Основы

Введение в тему

В этом уроке мы рассмотрим как заменить подстроку внутри строки, используя метод replace().

Метод replace Python возвращает копию строки, в которой все вхождения искомой подстроки заменяются другой подстрокой.

Что делает метод

Слово replace переводится как «заменять», что название этого метода является отличным описанием того, что он делает. С помощью метода replace можно заменить часть строки, называемую подстрокой или её всю на другую строку. Метод replace позволяет гибко изменять только необходимые части строки str.

Синтаксис

Метод .replace() имеет следующий синтаксис:

Параметры

В качестве аргументов в метод передаются:

str — Строка, к которой применяется метод (тип данных string).

old — Подстрока, которую необходимо найти и заменить (тип данных string).

new — Новая подстрока, которой будет заменена старая (тип данных string).

count— Необязательный аргумент. Количество совпадений старой подстроки, которую необходимо заменить (тип данных int). Если этот параметр не указать, то будут заменены все вхождения подстрок на новые.

Вот несколько примеров применения метода:

Возвращаемое значение

Метод возвращает копию строки, в которой старая подстрока заменяется новой подстрокой. Строка, к которой применяется метод остаётся неизменной. Если искомая подстрока не обнаружена, то возвращается копия исходной строки.

Применение replace для замены нескольких значений

С помощью данного метода возможно выполнить поиск и замену нескольких значений, например элементов коллекции:

С помощью словаря

Предыдущий пример позволяет заменить несколько элементов, однако все они имеют одно и то же значение «i». Если необходимо заменить несколько разных значений, например «i» на «I» и «a» на «A», то необходимо реализовать чуть более сложную программу с использованием словарей:

Здесь replace используется в функции, аргументы которой исходная строка и словарь со значениями для замены.

У этого варианта программы есть один существенный недостаток, программист не может быть уверен в том, какой результат он получит. Дело в том, что словари — это последовательности без определенного порядка, поэтому рассматриваемый пример программы может привести к двум разным результатам в зависимости от того, как интерпретатор расположит элементы словаря:

В Python версии 3.6 и более поздних порядок перебора ключей будет такой же, как и при котором они созданы. В более ранних версиях Python порядок может отличаться.

Для решения этой проблемы можно заменить обычный словарь на упорядоченный словарь OrderedDict, который нужно импортировать следующей командой:

Строки — это важный тип данных, который есть почти в любом языке программирования. Он служит для создания, изменения и сохранения текстовой информации, а также используется при реализации некоторых задач, связанных с числами.

Python даёт программисту много инструментов для работы со строками, в том числе и метод replace() .

Что делает метод

Синтаксис метода выглядит так:

В качестве аргументов в метод передаются:

  • old_str – часть исходной строки, которую необходимо заменить.
  • new_str – строка, на которую заменяют исходную строку ( old_str ).
  • count – определяет количество вхождений подстроки, которые необходимо заменить.
Здесь count – не обязательный параметр. Если его не указывать, то будут заменены все вхождения подстрок на новые.

В качестве str используется исходная строка (тип данных string).

Таким образом, метод replace позволяет гибко изменять только необходимые части строки str , работа метода продемонстрирована в следующих примерах:

Важно помнить, что строки — это неизменяемые последовательности. Поэтому метод replace не заменяет отдельные символы в целевой строке, вместо этого он создает её копию с нужными изменениями. Это важная особенность языка Python, которую должен знать каждый программист.

Это не очевидно, с помощью метода replace можно заменить сразу несколько значений, например все элементы списка:

Применение replace для замены нескольких значений

С помощью словаря

Здесь replace используется в функции, аргументы которой исходная строка и словарь со значениями для замены.

У этого варианта программы есть один существенный недостаток, программист не может быть уверен в том, какой результат он получит. Дело в том, что словари — это последовательности без определенного порядка, поэтому рассматриваемый пример программы может привести к двум разным результатам в зависимости от того, как интерпретатор расположит элементы словаря:

  • У меня есть собака и собака
  • У меня есть кошка и собака
В Python версии 3.6 и более поздних порядок перебора ключей будет такой же, как и при котором они созданы. В более ранних версиях Python порядок может отличаться.

Для решения этой проблемы можно заменить обычный словарь на упорядоченный словарь OrderedDict , который нужно импортировать следующей командой:

Помимо импорта в программе нужно поменять буквально одну строку:

Изменить её надо на:

Вариант со списками

Замену нескольких значений можно реализовать и по-другому, для этого используем списки:

В данном примере цикл for делает 2 итерации:

Другие типы Python и метод replace

Метод replace есть не только у строк, с его помощью программист может изменять последовательности байт, время и дату.

Синтаксис метода для последовательности байт ничем не отличается от синтаксиса для строк, для дат и времени в аргументах метода replace нужно писать идентификатор изменяемой цели, например:

С поомщью str.replace мы можем менять какие-то символы на другие. Если мы просто хотим убрать какие-то символы, тогда просто заменяем их на пустую строку. str.replace() будет применять замену ко всем найденным совподениям.


Если мы можем указать ограничение для количества совпадений, чтобы не убирать все символы.

С помощью ' re.sub '

re. sub (pattern, repl, string, count=0, flags=0)

Возвращает строку, полученную путем замены крайних левых неперекрывающихся
совпадений с шаблоном в строке на значение repl. Если совпадения с шаблоном
не найдены, возвращается неизмененная строка
— Из документации Python'а

Если мы хотим убрать символы, то просто заменяем совпадения на пустую строку.


  • Заменяемый шаблон → “[ $ | @ | & ]”
  • [ ] используется для определения множества
  • $ | @ | & → будет искать $ или @ или &
  • Заменяем на пустую строку
  • Если вышеуказанные символы заменяются найдены, то они заменяются на пустую строку

С помощью 'isalpha()'


isalpha() используется для того, чтобы проверять, состоит ли строка только из букв. Возвращает True если является буквой. Мы будем проходить по каждому символу строки и проверять является ли он буквой.

Пример

(c for c in s if c.isalpha())

Перед нами объект генератор, содержащий все буквы из строки:
s1=””.join(c for c in s if c.isalpha())

””.join будет соединять все символы в одну строку.

С помощью 'filter()'

f = filter(str.isalpha, s)

Функция filter() будет применять str.isalpha метод для каждого элемента строки, и если получаем истину , то мы возвращаем элемент. В противном случае - пропускаем.

Функция filter() вернет итератор, содержащий все буквы переданной строки, а join() будем "склеиват" все элементы друг с другом.

С помощью 're.sub()'


Рассмотрим s1 = re.sub(“[^A-Za-z]”, ””, s)

  • “[^A-Za-z]” → Ищет все символы, кроме букв. Если в начале множества указать ^ , тогда к шаблону будут подходить все те символы, которые НЕ указаны в множестве. (для русских слов используйте [^А-Яа-я] - прим. ред.)
  • Все символы, удовлетворяющие шаблону будут заменены на пустую строку.
  • Все символы, кроме букв, будут убраны.

С помощью 'isalnum()'


isalnum() используется, когда мы хотим определить состоит строка только из чисел или букв.

Пройдемся по каждому символу строки, что-бы выявить нужные символы.

С помощью 're.sub()'

  • “[^A-Za-z0–9]” → Этот шаблон будет искать все символы, кроме букв и цифр.
  • Все найденные символы будут заменены на пустую строку
  • Все символы, кроме букв и цифры убраны.

С помощью 're.sub()'


  • 5 - цифры от 0 до 9
  • re.sub(“[0–9]”, ””, s) - если есть совпадения, заменяем на пустую строку

С помощью 'isdecimal()'

isdecimal() возвращает истину, если все символы строки являются цифрами, в противном случае возвращается ложь.


Пороходим по каждому символу строки и проверяем и является ли он цифрой. "".join() соединяет все элементы.

С помощью 're.sub()'

Рассмотрим s1 = re.sub(“[^0–9]”, ””, s)

  • [^0-9] будет искать все символы кроме от 0 до 9
  • re.sub(“[^0–9]”, ””, s) все символы кроме цифр будут заменены на пустую строку.

С помощью 'filter()'

Рассмотрим f = filter(str.isdecimal, s)

Функция filter() будет выполнять str.isdecimal метод для каждого символа, если он возвращает истину, то добовляет его в генератор. Затем генератор распаковывается в готовую строку с помощью метода join() .

Строки в Python являются неизменяемыми объектами, поэтому все вышеуказаные методы убирает символы из данной строки и возвращает новую, они не меняют состояние оригинальной строки.


Python не поддерживает тип символов, они обрабатываются как одна строка, а также рассматриваются как подстроки. Мы используем для разбивки квадратные скобки вместе с индексом или индексами, чтобы получить подстроки.

Различные строковые операторы

Оператор not in. Описание: Не содержит -возвращает true, если буква не существует в данной строке. Пример: l не присутствует в слове Guru и, следовательно, это даст 1.

Оператор +. Описание: Объединение 2 строк. Пример: Объединяет строки и дает результат.

Оператор *. Описание: Повторение. Пример: Выводит символ дважды.

Еще несколько примеров

Вы можете обновить строку Python, переназначив переменную другой строке. Новое значение может быть связано с предыдущим значением или с совершенно другой строкой.

Метод строк Python replace()

Метод replace() возвращает копию строки, в которой значения старой строки были заменены новым значением.


Бесплатный курс «Python. Быстрый старт»

Получите курс и узнайте, как создать программу для перевода текстов на Python

Изменение верхнего и нижнего регистра строк

В Python вы можете даже привести строку к верхнему или нижнему регистру.

Кроме того, вы также можете использовать другую функцию, такую как capitalize:

Вы также можете преобразовать строку в нижний регистр:

Функция join является более гибким способом объединения строк. С помощью функции join вы можете добавить в строку любой символ.

Например, если вы хотите добавить двоеточие (:) после каждого символа в строке «Python», вы можете использовать следующий код.

Реверс строк

Используя функцию реверса, вы можете перевернуть строку. Например, если у нас есть строка «12345», а затем, если вы применяете код для обратной функции, как показано ниже.

Разделение строк

Важное примечание: В Python строки являются неизменяемыми. Рассмотрим следующий код:

Приведенные выше коды являются примерами Python 3. Если вы хотите запустить Python 2, рассмотрите следующий код.

В Python появилась функция .format, которая позволяет использовать %d и т. д. для форматирования строк.

Заключение

Поскольку Python является объектно-ориентированным языком программирования, многие функции могут быть применены к объектам Python. Примечательной особенностью Python являются отступы исходных операторов, облегчающие чтение кода.

В нарезке, если диапазон объявлен [1: 5], он может фактически извлечь значение из диапазона [1: 4]

Вы можете обновить строку Python, переназначив переменную другой строке

Метод replace() возвращает копию строки, в которой вхождение старых символов заменяется новыми.

Синтаксис для метода replace: oldstring.replace(«значение, на которое заменяем», «значение, которое заменяем»)

Строковые операторы, такие как [], [:], in, Not in и т. д., могут применяться для конкатенации строки, извлечения или вставки определенных символов в строку или для проверки того, существует ли определенный символ в строке

Другие строковые операции включают:

Изменение верхнего и нижнего регистра

Функция Join, чтобы добавить любой символ в строку

Редакция: Команда webformyself.


Бесплатный курс «Python. Быстрый старт»

Получите курс и узнайте, как создать программу для перевода текстов на Python

Читайте также: