Удалить строку из файла с помощью

Обновлено: 21.11.2024

Как мне использовать sed для удаления всех строк в текстовом файле, содержащих определенную строку?

20 ответов 20

Чтобы удалить строку и вывести вывод на стандартный вывод:

Непосредственное изменение файла — не работает с BSD sed:

То же самое, но для BSD sed (Mac OS X и FreeBSD) — не работает с GNU sed:

Чтобы напрямую изменить файл (и создать резервную копию) — работает с BSD и GNU sed:

Спасибо, но, похоже, он не стирает его из файла, а просто распечатывает содержимое текстового файла без этой строки.

@A Clockwork: да, вам нужно перенаправить вывод либо в новый файл с чем-то вроде sed '/pattern to match/d' ./infile > ./newfile, или если вы хотите выполнить редактирование на месте затем вы можете добавить флаг -i в sed, как в sed -i '/pattern to match/d' ./infile . Обратите внимание, что флаг -i требует GNU sed и не является переносимым

Для некоторых ароматов sed; Флаг sed "-i" требовал расширения. (например, sed -i.backup '/pattern to match/d' ./infile ). Это помогло мне с правками на месте.

Еще одно замечание для пользователей Mac OS X: по какой-то причине флаг -i требует передачи аргумента, даже если это просто пустая строка, например sed -i '' '/pattern/d' ./infile .

Есть много других способов удалить строки с определенной строкой помимо sed :

Рубин (1.9+)

Оболочка (bash 3.2 и более поздние версии)

Группа GNU

И, конечно же, sed (печать инверсии быстрее, чем фактическое удаление):

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

В OS/X вариант оболочки не сохраняет начальные пробелы, но вариант grep -v хорошо сработал для меня.

пример sed имеет другое поведение, он только greps! это должно быть что-то вроде sed -n -i '/pattern/!p' file .

Версия grep не работает, если каждая строка соответствует шаблону. Лучше сделать: grep -v "файл шаблона" > temp; mv temp file Это может относиться к некоторым другим примерам в зависимости от возвращаемого значения.

«печать инверсии выполняется быстрее, чем фактическое удаление» — не на моей машине (MacBook Air 2012 г., OS X 10.13.2). Создать файл: seq -f %f 10000000 >foo.txt. sed d: время sed -i '' '/6543210/d' foo.txt реальное 0m9.294s. sed !p: время sed -i '' -n '/6543210/!p' foo.txt реальное 0m13.671s. (Для файлов меньшего размера разница больше.)

Вы можете использовать sed для замены строк в файле. Однако кажется, что это намного медленнее, чем использовать grep для инверсии во второй файл, а затем перемещать второй файл поверх оригинала.

Все равно первая команда на моей машине выполняется в 3 раза дольше.

Мне любопытно, как изменится производительность, если использовать sed '/pattern/d' имя_файла > имя_файла2; mv имя_файла2 имя_файла

(используя /usr/share/dict/words Ubuntu) grep и mv: 0,010 с | sed на месте: 0,197 с | sed и mv: 0,031 с

Легкий способ сделать это с помощью GNU sed:

Полезный совет для тех, кто наткнулся на эту ветку вопросов и ответов и не знаком с написанием сценариев оболочки: короткие параметры подходят для одноразового использования в командной строке, но в сценариях следует отдавать предпочтение длинным параметрам, поскольку они более удобочитаемы.

+1 для флага --in-place. Мне нужно проверить это на файлах, защищенных разрешениями. (нужно выполнить некоторую очистку пользователей.)

Обратите внимание, что параметр long доступен только в GNU sed. Пользователям Mac и BSD для этого потребуется установить gsed.

Еще один совет: если ваше регулярное выражение не соответствует, попробуйте параметр -r (или -E , в зависимости от вашей версии). Это позволяет использовать метасимволы регулярных выражений + , ? , <. >и (. ) .

Это правильный ответ, когда на вашем диске нет места и вы не можете скопировать текст в другой файл. Эта команда делает то, что было поставлено под сомнение?

Вы можете использовать ex (стандартный командный редактор Unix):

  • + выполняет указанную команду Ex ( man ex ), так же, как -c, которая выполняет wq (запись и выход)
  • g/match/d — команда Ex для удаления строк с заданным соответствием, см. Степень g

Приведенный выше пример представляет собой POSIX-совместимый метод редактирования файла на месте в соответствии с этим постом в Unix.SE и спецификациями POSIX для ex .

Разница с sed заключается в следующем:

sed — это Stream EDitor, а не файловый редактор. BashFAQ

Если вам не нравится непереносимый код, накладные расходы ввода-вывода и некоторые другие нежелательные побочные эффекты. Таким образом, некоторые параметры (такие как in-place/ -i ) являются нестандартными расширениями FreeBSD и могут быть недоступны в других операционных системах.

@kenorb "Накладные расходы ввода-вывода и некоторые другие нежелательные побочные эффекты", не могли бы вы уточнить? AFAIK ex использует временный файл, как и любой другой нормальный инструмент, кроме idk с использованием dd

У меня были проблемы с этим на Mac. Кроме того, мне нужно было сделать это с помощью замены переменных.

sed -i '' "/$pattern/d" $file

где $file – это файл, который необходимо удалить, а $pattern – это шаблон, который необходимо удалить.

Я выбрал '' из этого комментария.

Здесь следует отметить использование двойных кавычек в "/$pattern/d" . Переменная не будет работать, если мы используем одинарные кавычки.

Mac sed требует параметр после -i , поэтому, если вам не нужна резервная копия, вам все равно придется добавить пустую строку: -i ''

Вы также можете использовать это:

Здесь -v будет печатать только шаблон, отличный от вашего (это означает инвертировать совпадение).

Чтобы получить аналогичный результат с помощью grep, вы можете сделать следующее:

Я сделал небольшой бенчмарк с файлом, который содержит примерно 345 000 строк. В этом случае способ с grep примерно в 15 раз быстрее, чем метод sed.

Я пробовал как с настройкой LC_ALL=C, так и без нее, похоже, тайминги существенно не изменились. Строка поиска (CDGA_00004.pdbqt.gz.tar) находится где-то в середине файла.

Вот команды и тайминги:

Я использую платформу Linux (Gentoo). Версия sed — GNU sed v 4.2.2, версия Perl — Perl 5 (не могу сказать, какую версию я использовал во время теста), а grep (GNU) — версия 3.0.

Первая команда редактирует файл(ы) на месте (-i).

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

Вы также можете удалить диапазон строк в файле. Например, чтобы удалить хранимые процедуры в файле SQL.

sed '/CREATE PROCEDURE.*/,/END ;/d' sqllines.sql

Это удалит все строки между CREATE PROCEDURE и END ;.

Эта команда sed почистила многие файлы sql.

Удалить строки из всех файлов, которые соответствуют совпадению

echo -e "/thing_to_delete\ndd\033:x\n" | vim file_to_edit.txt

На всякий случай, если кто-то захочет сделать это для точного совпадения строк, вы можете использовать флаг -w в grep - w для всего. То есть, например, если вы хотите удалить строки с номером 11, но оставить строки с номером 111:

Это также работает с флагом -f, если вы хотите исключить сразу несколько точных шаблонов. Если «черный список» — это файл с несколькими шаблонами в каждой строке, который вы хотите удалить из «файла»:

Немного вводит в заблуждение. -w, --word-regexp Выбрать только те строки, которые содержат совпадения, образующие целые слова. vs. -x, --line-regexp Выбрать только те совпадения, которые точно соответствуют всей строке. Для шаблона регулярного выражения это похоже на заключение шаблона в скобки, а затем его окружение символами ^ и $.

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

Многие библиотеки языков программирования имеют функцию для выполнения такого преобразования, например,

Но как это сделать в командной строке?

Поскольку это вопрос, ориентированный на sed, одним из подходов может быть использование самого sed:

Команда sed известна как потоковый редактор. Команда sed используется в Linux для простого преобразования текста.

Одной из многих важных команд Linux также является команда sed, которая играет жизненно важную роль в работе с файлами. Он используется для многих целей; некоторые из основных из них следующие.

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

  • Удаление строк с регулярными выражениями.
  • Удаление определенной строки в зависимости от позиции файла.

Итак, если вы думаете об удалении строк из файла с помощью команды sed, прочитайте нашу статью от начала до конца. Мы дадим вам краткую информацию о методах удаления линий

Как удалить строки из файла с помощью команды SED?

В этой статье мы будем использовать команду sed без параметра -i, так как это демонстрационная статья. Похожим методом является параметр «пробный запуск», который показывает все значения для файла без внесения каких-либо изменений.

С помощью команды sed мы можем удалить строки в зависимости от среды, используя -i.

Чтобы показать команду sed, мы создаем файл с именем LinuxhintOS.txt. Чтобы предоставить более точную информацию, мы включили эти номера строк в следующий контент.

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

В этой части объясняется использование команды sed для удаления строк из файла «LinuxhintOS.txt» в зависимости от его положения.

Сначала откройте файл с помощью следующей команды:

Теперь выполните приведенную ниже команду, чтобы удалить первую строку:

В приведенной выше команде:

N– «N-я» строка в файле

D– удаление файла

Итак, давайте выполним эту команду в нашем примере, чтобы удалить 10-ю строку из текстового файла:

sed '10d' LinuxhintOS.txt

Удалить последнюю строку из файла

Если нам нужно удалить последнюю строку из файла, вместо «N» в синтаксисе, использованном выше, мы будем использовать «$». Здесь $ представляет последнюю строку.

После этого наш файл изменится на что-то вроде этого.

Удалить первую и последнюю строки вместе

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

Эта команда одновременно удаляет из файла и первую, и последнюю строки.

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

Удалить диапазон строк

Команда sed может удалить строки любого диапазона. Для этого нам просто нужно ввести «минимальный» и «максимальный» номера строк.

В этом примере мы удалим строки с номерами от 4 до 7.

После удаления этих диапазонов строк наш файл будет выглядеть так.

Удалить несколько строк

sed также может удалять несколько строк в наборе. Как видите, в этом примере мы удалили третью, шестую, восьмую и последнюю строки.

При применении команды sed, написанной выше, в нашем файле «LinuxhintOS.txt» происходят следующие изменения.

Удаление строк, отличных от указанной строки или указанного диапазона строк

Командой sed мы удаляем из файлов те строки, которые не определены в команде, т.е. удаляются строки, отличные от описанных.

Из этого файла мы удалим оставшиеся строки, кроме цифр с 4 по 7.

Здесь знак «!» означает, что мы не должны удалять строку с этим конкретным номером из файла.

<р>! – используется для сохранения определенного количества строк в файле

После этого наш файл будет выглядеть примерно так:

Удалить пустые или пустые строки

Приведенная ниже команда sed удаляет пустые или пустые строки из соответствующего файла.

Поскольку в нашем файле нет пустых или пустых строк, никаких изменений не произошло:

Удалить строки из файла на основе шаблона

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

Удаление строк, содержащих шаблон

В примере следующая команда удаляет строки, соответствующие шаблону «Система», из файла «LinuxhintOS.txt».

Итак, нам нужно удалить те строки, у которых есть «Недоступно». Вот почему мы выполним следующую команду:

Удаление строк, содержащих одну или несколько строк

С помощью команды sed мы можем удалить строки, соответствующие шаблону «Не обновлено» или «Недоступно» из файла «LinuxhintOS.txt», и эта команда выглядит примерно так:

Удаление строк, начинающихся с определенного символа

Мы можем удалить все строки, начинающиеся с любого символа, с помощью команды sed.Мы создали новый файл с именем «LinuxhintOS.txt» со следующим содержимым:

Приведенная ниже команда sed удалит все строки, начинающиеся с символа «А».

Мы удалим из нашего файла такие строки, которые начинаются с букв «A» и «L». Для чего мы будем использовать следующую команду.

С помощью sed мы удаляем все строки, начинающиеся с «A» и заканчивающиеся строкой «Linux».

Удаление строк, заканчивающихся указанным символом

Эта команда sed удаляет все строки, оканчивающиеся на «m».

Следующая команда sed удалит строки, заканчивающиеся символами "M" и "X".

Строки символов, заканчивающиеся на «M» и «X», удаляются из нашего файла; тогда наш файл будет выглядеть так.

Удаление всех строк, начинающихся с прописных букв

Мы удалим все эти строки из файла с помощью следующей команды: заглавная буква.

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

Удаление совпадающей линии шаблона с указанным диапазоном

С помощью следующей команды мы удалим только те строки из некоторых определенных строк с определенным шаблоном.

В этом примере удаляются только строки с шаблонами Linux из файла между 1 и 6 строками.

После применения команды наш файл sed – demo-1.txt будет выглядеть примерно так.

Мы удалим вторую строку с помощью следующей команды sed, только если она содержит шаблон «openSUSE».

Соответствующая команда удалит вторую строку из нашего файла «sed — demo-1.txt», поскольку она имеет определенный шаблон «openSUSE».

Соответствующая команда удалит вторую строку из нашего файла «sed — demo-1.txt», поскольку она имеет определенный шаблон «openSUSE».

Мы также можем удалить строку, соответствующую шаблону «система», и следующую строку в файле с помощью команды sed.

Удалить линии с определенными шаблонами

Вы можете удалить все строки, соответствующие шаблону «CentOS», с помощью команды sed.

Удаление строк, содержащих числа/цифры

С помощью приведенной ниже команды sed мы можем удалить все строки, содержащие «цифру».

Внеся некоторые изменения в команду sed, мы удалим из файла все те строки, которые начинаются только с цифр.

После этой команды все строки, начинающиеся с цифр, будут удалены из нашего файла.

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

Удаление строк, содержащих буквы алфавита, из файла

Командой sed мы удалим из файла «LinuxhintOS.txt» все строки, содержащие любые буквенные символы.

Заключение

В этой статье показано несколько примеров удаления строк из файла с помощью команды sed. Мы видим, как с помощью команды sed мы легко можем удалить любые строки из файлов. Если мы запомним эти команды, то сэкономим много времени при сокращении.

Об авторе

Пратик Джангид

Являюсь страстным пользователем Linux по личным и профессиональным причинам, всегда изучаю новинки мира Linux и делюсь ими со своими читателями.

Sed — это встроенный в Linux инструмент для работы с текстом. Термин sed означает «редактор потока». Несмотря на название, sed сам по себе не является текстовым редактором. Вместо этого он принимает текст в качестве входных данных, выполняет различные модификации текста в соответствии с инструкциями и распечатывает выходные данные.

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

Sed в Linux

Полное название sed дает нам представление о методе его работы. Sed воспринимает входной текст как «поток». Текст может быть откуда угодно — текстовый файл или стандартный вывод (STDOUT). Получив ввод, sed обрабатывает его построчно.

Для демонстрации я создал простой текстовый файл.

Удаление строки с помощью sed

Чтобы удалить строку, мы будем использовать команду sed «d». Обратите внимание, что вы должны объявить, какую строку удалить. В противном случае sed удалит все строки.

Удалить одну строку

Следующая команда sed удалит первую строку текста.

В основном, чтобы удалить строку, вам нужен номер целевой строки. Удалим строку 5.

Чтобы удалить последнюю строку текстового файла, вместо ручного вычисления номера строки используйте «$».

Удалить диапазон строк

Sed может удалить ряд строк. Здесь минимальное значение строки равно 1, а максимальное значение строки равно 5. Чтобы объявить диапазон, мы используем запятую (,).

Удалить несколько строк

Что делать, если строки, которые вы хотите удалить, не находятся в фиксированном диапазоне? Взгляните на следующую команду sed. Обратите внимание, что мы используем точку с запятой (;) в качестве разделителя. По сути, каждый параметр с разделителями — это отдельная команда sed.

Удалить все строки, кроме указанного диапазона

В следующем примере sed сохранит только строки, указанные в диапазоне. Здесь, "!" — это оператор отрицания, указывающий sed сохранить определенные строки.

Удалить пустые строки

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

Удалить линии по шаблону

Sed может искать определенный шаблон и выполнять указанные действия в строке. Мы можем использовать эту функцию для удаления определенных строк, соответствующих шаблону.

Давайте посмотрим на следующую демонстрацию. Sed удалит любую строку, содержащую строку «the».

Мы также можем описать несколько строк для поиска. Каждая строка разделяется символом «\|».

Удалить строки, начинающиеся с определенного символа

Чтобы обозначить начало строки, мы будем использовать символ вставки (^).

Следующая команда sed удалит все строки, начинающиеся с цифры. Здесь группа символов «[:цифра:]» описывает все цифры (0–9).

Мы также можем описать несколько символов для действительного совпадения. В следующем примере будут найдены все строки, начинающиеся с «t» и «b».

В следующем примере проверьте, как удалить все строки, начинающиеся с символа верхнего регистра. Здесь мы используем группу символов верхнего регистра «[:upper:]».

Если в начале целевых строк есть символы нижнего регистра, используйте группу символов нижнего регистра «[:lower:]».

Удалить строки, заканчивающиеся определенным символом

Для обозначения конца строки мы можем использовать символ «$». Он описывает совпадение с последним вхождением шаблона.

В следующем примере sed удалит строки, оканчивающиеся на «e».

Давайте попробуем выполнить поиск по нескольким символам.

Удаление строк, соответствующих шаблону, и следующей строки

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

Проверьте следующую команду sed.

Sed найдет строку, содержащую "the", и удалит последующую строку.

Удаление строки от совпадения с образцом до конца

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

Здесь sed сначала удалит строку, соответствующую шаблону "the", а затем все строки.

Заключительная мысль

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

Это всего лишь краткое руководство, демонстрирующее одну из функций sed — удаление строк. Есть множество других вещей, которые вы можете делать с помощью sed. Например, ознакомьтесь с этим мега-руководством по 50 примерам sed. Это фантастическое руководство, охватывающее все основы и множество расширенных реализаций SED.

Об авторе

Сидратул Мунтаха

Студент CSE. Я люблю Linux и играю с технологиями и гаджетами. Я использую как Ubuntu, так и Linux Mint.

Поскольку в Python нет прямого метода удаления определенной строки в файле, необходимо найти собственный подход.

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

Мы также рассмотрим примеры использования пользовательской логики для решения более сложных задач. Неважно, работаем ли мы с простым текстовым файлом или более сложными файлами с разделителями-запятыми (CSV), эти методы помогут вам управлять своими данными.

Мы можем использовать Python для обработки как больших, так и маленьких файлов с эффективным использованием памяти.

Использование числа для удаления строки

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

Файл называется names.txt и сохраняется в том же каталоге, что и наш файл python. Наша цель — удалить 7-ю строку в файле.

В Python мы можем использовать оператор with для безопасного открытия файлов. Открыв файл, мы воспользуемся методом readlines() для получения списка, содержащего содержимое файла.

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

Используя цикл for для перебора строк файла, мы также используем переменную для отслеживания номера текущей строки. Когда мы достигнем строки, которую хотим удалить, оператор if гарантирует, что мы пропустим эту строку.

Давайте еще раз пройдемся по шагам:

  1. Открыть файл в режиме чтения
  2. Прочитать содержимое файлов
  3. Открыть файл в режиме записи
  4. Используйте цикл for, чтобы прочитать каждую строку и записать ее в файл
  5. Когда мы дойдем до строки, которую хотим удалить, пропустите ее.

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

names.txt
1 Амина, Вэлчи
2 Шэрон Рейнольдс
3 Лилиан Хейн
4 Фелисита Хауэлл
5 Салли Сенгер< br />6 Люсиль Шустер
7 Эммитт Шуппе
8 Ровена Леффлер
9 Иполито Бац
10 Джиа Хилл

Пример 1. Удаление строки на основе указанного номера строки

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

Если мы планируем использовать блок кода Python более одного раза, рекомендуется обернуть его функцией. Это сэкономит нам время и энергию.

Удалить строку по содержимому

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

У нас есть каталог детских песенок, но кто-то немного подшутил над нами. По иронии судьбы они добавили в наши файлы строку «Эта строка не принадлежит»!

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

В нашем коде Python мы начнем с чтения файла с именем itsy_bitsy.txt и сохранения его содержимого в переменной с именем lines.

Как и в предыдущем примере, мы будем использовать Python с операторами для открытия файла. Чтобы найти совпадающую строку, нам нужно удалить символы новой строки, которые readlines() добавляет в конец каждой строки.

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

Когда соответствующий контент будет найден, мы будем использовать оператор if, чтобы передать его, фактически удалив его из старого файла.

itsy_bitsy.txt
Маленький паучок забрался на водосточную трубу.
Пошел дождь
И смыл паука.
Вышел. солнце
Эта линия не принадлежит
И высушил весь дождь
И маленький паучок снова полез вверх по носику.

Пример 2. Сопоставление содержимого и его удаление из файла

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

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

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

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

Удалить строку с определенной строкой

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

В Python метод find() можно использовать для поиска подстроки в строке. Если строка содержит подстроку, функция возвращает индекс, представляющий ее позицию. В противном случае метод возвращает -1.

В текстовом файле с именем statements.txt у нас есть список случайно сгенерированных предложений. Нам нужно удалить любое предложение, содержащее данную подстроку.

Используя find(), мы узнаем, содержит ли строка искомую строку. Если это так, мы удалим его из файла.

Вот синтаксис использования find():

statements.txt
Он не прислушался к предупреждению о банане.
Моя подруга отнесла яблоки на рынок.
Она купила ферму, которая выращивает персики.
За холмами есть прекрасный виноградный сад.
Она без ума от своей новой машины.

Пример 3. Удаление строки, содержащей заданную строку

Удалить самую короткую строку в файле

Давайте еще раз взглянем на statement.txt. Внесены некоторые изменения.

statements.txt
Он не прислушался к предупреждению о Банане.
Мой друг отнес яблоки на рынок .
Она купила ферму, где выращивают персики.
Он утверждает, что видел НЛО.
За холмами есть прекрасный виноградный сад.
На острове было мало еды, кроме кокосов.

Мы добавили несколько новых строк. На этот раз нам нужно удалить самую короткую строку в документе. Мы можем сделать это, используя метод len() для определения длины каждой строки.

Сравнивая длины линий, можно найти самую короткую линию. После этого мы можем использовать оператор with open и удалить строку из файла.

Пример 4. Удаление самой короткой строки в файле с помощью метода len()

Обзор

В этом посте мы рассмотрели несколько методов удаления строк из файлов в Python. Мы увидели, что можем удалять строки в зависимости от их положения в файле с помощью цикла for.

Мы также можем удалить файлы, соответствующие содержимому, путем сравнения строк либо с помощью оператора ==, либо с помощью метода find().

Это лишь некоторые способы удаления строк из файла в Python.

Похожие сообщения

Если вы хотите узнать больше о работе со строками и файловыми данными в Python, перейдите по ссылкам ниже.

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