Python удалить строку из файла
Обновлено: 20.11.2024
В этой статье мы обсудим различные способы удаления определенных строк из файла либо по номеру строки, либо по содержимому, либо на основе любой пользовательской логики.
В Python нет прямого API для удаления строк или текста из середины файла. Поэтому в этой статье мы будем следовать подходу к удалению строк в определенных местах файла, т. е.
«Скопировать содержимое данного файла во временный файл построчно и при копировании пропустить определенные строки. В конце удалите исходный файл и переименуйте временный файл как исходный файл».
Создается впечатление, что мы удалили определенные строки из файла. Этот файл может быть простым текстовым файлом или файлом CSV. При таком подходе мы также можем удалять строки из огромных файлов, экономя память.
Давайте воспользуемся этой логикой и реализуем наши функции вокруг нее,
Удалить строку из файла по определенному номеру строки в python
Здесь мы реализуем функцию, которая принимает в качестве аргументов имя файла и номер строки. Затем он удаляет строку с указанным номером строки,
Алгоритм функции будет,
- Принимать исходное имя файла и номер строки в качестве аргумента
- Открыть исходный файл в режиме чтения
- Создайте временный файл и откройте его в режиме записи.
- Чтение содержимого исходного файла построчно и для каждой строки
- Отслеживать номер строки
- Если номер строки совпадает с номером строки в аргументе функции, пропустите эту строку, иначе добавьте строку во временный файл.
- Удалить исходный файл
- Переименуйте временный файл в исходный.
- Удалить временный файл
Реализация функции выглядит следующим образом:
Эта функция предполагает, что номера строк в файле начинаются с 0. Итак, чтобы удалить строку на n-й позиции, нам нужно передать n-1 в качестве номера строки. Теперь воспользуемся этой функцией,
Предположим, у нас есть файл «sample_1.txt» со следующим содержимым,
Теперь давайте удалим строку в строке номер 2, используя созданную выше функцию,
Теперь содержимое файла «sample_1.txt» выглядит следующим образом,
2-я строка из файла теперь удалена.
Удалить несколько строк из файла по номерам строк
Чтобы удалить различные строки из файла по номерам строк, мы будем использовать похожий алгоритм, т.е.
- Принимать исходное имя файла и список номеров строк в качестве аргумента
- Открыть исходный файл в режиме чтения
- Создайте фиктивный/временный файл и откройте его в режиме записи.
- Чтение содержимого исходного файла построчно и для каждой строки
- Отслеживать номер строки
- Если номер текущей строки совпадает с номером строки в заданном списке номеров, пропустите эту строку, иначе добавьте строку во временный/пустой файл.
- Удалить исходный файл
- Переименуйте временный файл в исходный.
- Удалить временный файл
Реализация функции выглядит следующим образом:
Предположим, у нас есть файл «sample_2.txt» со следующим содержимым,
Давайте воспользуемся приведенной выше функцией, чтобы удалить строки с номерами 1,2,3 из текстового файла,
Теперь содержимое файла «sample_2.txt» выглядит следующим образом:
Он удалил несколько строк из файла. Поскольку эта функция ожидает, что номер строки начинается с 0, поэтому для удаления строк в строках с номерами 1, 2, 3 мы передали 0, 1 и 2 в качестве номеров строк в списке.
Удалить определенную строку из файла, сопоставив содержимое
Предположим, вместо номера строки мы хотим удалить определенную строку из текстового/CSV-файла, полностью совпадающую с заданным текстом. Для этого мы будем использовать ту же логику, т.е.
«Скопируйте содержимое данного файла во временный файл построчно и при копировании для каждой строки проверяйте, совпадает ли оно с заданным текстом. Если он совпадает, то пропустите эту строку при копировании. В конце удалите исходный файл и переименуйте временный файл как исходный файл».
Функция удаления строки из файла, которая соответствует заданному тексту, выглядит следующим образом:
Предположим, у нас есть файл «sample_3.txt» со следующим содержимым,
Давайте воспользуемся приведенной выше функцией, чтобы удалить строку с содержимым «Фиксированная строка B»
Теперь содержимое файла «sample.txt» выглядит следующим образом:
Удалить определенные строки из файла, соответствующие заданным условиям
Во всех приведенных выше примерах мы следовали одной и той же логике удаления строк из файла. Единственным отличием была логика определения строк, которые нам нужно пропустить. Мы можем вынести эту логику наружу и сделать эту функцию универсальной.
Алгоритм универсальной функции будет
- Принять исходное имя файла и функцию в качестве обратного вызова, например, condition()
- Открыть исходный файл в режиме чтения
- Создайте временный файл и откройте его в режиме записи.
- Читать содержимое исходного файла построчно и для каждой строки
- Отслеживать номер строки
- Передайте строку в функции обратного вызова, т. е. в условии(), и, если эта функция возвращает значение True, пропустите эту строку при копировании, иначе скопируйте строку во временный файл.
- Удалить исходный файл
- Переименуйте временный файл в исходный.
- Удалить временный файл
Реализация функции выглядит следующим образом:
Эту функцию можно использовать для удаления определенных строк из файла. Теперь логику для определения конкретных строк, которые необходимо удалить, можно записать в отдельную функцию, и мы можем передать эту функцию в качестве аргумента в функцию delete_line_by_condition().
Давайте рассмотрим пример удаления строк с пользовательской логикой, используя созданную выше функцию,
Удалить строки из файла, содержащие слово/подстроку
Содержимое файла «sample_4.txt» следующее:
Давайте воспользуемся приведенной выше функцией, чтобы удалить строку, содержащую строку «Dummy»
Теперь содержимое файла «sample_4.txt» выглядит следующим образом:
Мы передали логику в виде лямбда-функции. Для каждой строки в файле вызывалась эта лямбда-функция, а строки, для которых эта лямбда-функция возвращала значение True, удалялись.
Удалить более короткие строки из файла, т. е. строки, длина которых меньше минимальной длины
Содержимое файла «sample_5.txt» следующее:
Давайте воспользуемся приведенной выше функцией для удаления строк, длина которых меньше 15
Теперь содержимое файла «sample_5.txt» выглядит следующим образом:
Мы передали логику в виде лямбда-функции. Для каждой строки в файле вызывалась эта лямбда-функция, а строки, для которых эта лямбда-функция возвращала True, удалялись.
Полный пример:
Учебники по Pandas – изучите анализ данных с помощью Python
Вы хотите сделать карьеру в области Data Science с помощью Python?
Наука о данных — это будущее, и оно уже наступило. На сегодняшний день специалисты по данным являются самыми востребованными профессионалами. Чтобы стать хорошим Data Scientist или сменить профессию в Data Science, нужно обладать нужным набором навыков. Мы составили список лучших профессиональных сертификатов в области науки о данных с помощью Python. Эти курсы научат вас инструментам программирования для науки о данных, таким как Pandas, NumPy, Matplotlib, Seaborn, и тому, как использовать эти библиотеки для реализации моделей машинного обучения.
Ознакомьтесь с подробным обзором лучшего профессионального сертификата по науке о данных с Python.
Помните, что наука о данных требует большого терпения, настойчивости и практики. Итак, начните учиться сегодня.
Присоединяйтесь к сообществу разработчиков Python в LinkedIn
Похожие сообщения
Добавить элементы в конец массива в Python
Как удалить столбцы из массива NumPy
Как удалить строки из массива NumPy
Удалить последний элемент из массива NumPy в Python
Удалить первый элемент из массива NumPy в Python
Проверьте, является ли двумерный массив NumPy или матрица симметричным
Редактировать значения ячеек в CSV-файлах с помощью Pandas в Python
Сортировка массива NumPy в порядке убывания в Python
Преобразование списка в набор в Python
Добавление двух элементов списка в Python
Добавление одного списка к другому списку в Python
Удалить дубликаты из массива NumPy в Python
Проверить, существует ли столбец в Pandas DataFrame
Проверить, равны ли два массива NumPy в Python
Pandas: проверьте, все ли значения в столбце равны нулю
Проверить, все ли значения в столбце являются NaN в Pandas
Pandas — проверьте, равны ли все значения в столбце
Оставить комментарий Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Реклама
Реклама
Последние публикации
Учебники по Python
Что-то ищу
Учебники по C++/C++11
Условия использования
Условия и политика
Учебники по Python
Избранные сайты
Отказ от ответственности
Условия и политика
Авторское право © 2022 thisPointer
Техническое хранение или доступ строго необходимы для законных целей, позволяющих использовать конкретную услугу, явно запрошенную подписчиком или пользователем, или с единственной целью осуществления передачи сообщения по сети электронной связи.
Техническое хранение или доступ необходимы для законных целей хранения настроек, которые не запрашиваются подписчиком или пользователем.
Техническое хранилище или доступ, которые используются исключительно в статистических целях. Техническое хранилище или доступ, который используется исключительно для анонимных статистических целей.Без повестки в суд, добровольного согласия со стороны вашего интернет-провайдера или дополнительных записей от третьей стороны информация, хранящаяся или извлекаемая только для этой цели, обычно не может быть использована для вашей идентификации.
Техническое хранилище или доступ необходимы для создания профилей пользователей для отправки рекламы или отслеживания пользователя на веб-сайте или на нескольких веб-сайтах в аналогичных маркетинговых целях.
Техническое хранение или доступ строго необходимы для законных целей, позволяющих использовать конкретную услугу, явно запрошенную подписчиком или пользователем, или с единственной целью осуществления передачи сообщения по сети электронной связи.
Техническое хранение или доступ необходимы для законных целей хранения настроек, которые не запрашиваются подписчиком или пользователем.
Техническое хранилище или доступ, которые используются исключительно в статистических целях. Техническое хранилище или доступ, который используется исключительно для анонимных статистических целей. Без повестки в суд, добровольного согласия со стороны вашего интернет-провайдера или дополнительных записей от третьей стороны информация, хранящаяся или извлекаемая только для этой цели, обычно не может быть использована для вашей идентификации.
Техническое хранилище или доступ необходимы для создания профилей пользователей для отправки рекламы или отслеживания пользователя на веб-сайте или на нескольких веб-сайтах в аналогичных маркетинговых целях.
Обработка файлов данных поддерживается и разрешена Python и является неотъемлемой частью языка программирования Python. Однако в Python нет прямых функций, которые могут удалить определенную строку в заданном файле.
В этом руководстве демонстрируются различные способы удаления определенной строки из файла в Python.
Эта задача удаления конкретной строки может быть реализована с помощью нескольких различных подходов.
Использование номера строки для удаления определенной строки из файла в Python
Способ 1
Этот метод, как указано выше, использует номер строки, указанный пользователем, для удаления строки из определенного файла в Python.
Он использует цикл for, метод readlines() и метод enumerate().
Возьмем в качестве примера файл с именем test.txt , содержание которого подробно описано ниже.
В следующем коде используются методы enumerate() и readlines() для удаления строки из определенного файла в Python.
Приведенный выше код вносит следующие изменения:
- Сначала файл открывается в режиме чтения.
- Затем содержимое данного файла считывается в список с помощью функции readlines().
- Затем файл закрывается.
- Затем файл снова открывается, но на этот раз в режиме записи.
- Затем к созданному списку применяются цикл for и функция enumerate().
- Условие if используется для проверки и выбора номера строки. Упомянутый номер строки удален.
- Затем файл закрывается.
Метод 2
Метод seek() также можно использовать для реализации той же задачи удаления строки из файла с использованием номера строки. Мы будем работать с тем же файлом test.txt, как указано в методе выше.
Благодаря методу seek() нам не нужно дважды открывать один и тот же файл, что упрощает и ускоряет его.
В следующем коде используется метод seek() для удаления строки из определенного файла в Python.
Приведенный выше код вносит следующие изменения:
- Файл открывается в режиме r+, который допускает как чтение, так и запись.
- Затем содержимое файла считывается в список с помощью функции readlines().
- Затем используется метод seek() для перемещения указателя обратно в начальную точку списка.
- Затем файл усекается с помощью метода truncate().
- Затем к созданному списку применяются цикл for и функция enumerate().
- Условие if используется для проверки и выбора номера строки. Упомянутый номер строки удален.
- Файл закрыт.
Удаление первой или последней строки из файла в Python
Для реализации этого метода мы используем нарезку списка при записи содержимого файла в список.
Например, мы удалим первую строку из упомянутого выше файла ( test.txt ).
Следующий код удаляет первую строку из заданного файла в Python.
Приведенный выше код вносит следующие изменения и обеспечивает следующий вывод:
- Файл открывается в режиме r+, который допускает как чтение, так и запись.
- Содержимое файла считывается в список с помощью функции readlines().
- Затем используется метод seek() для перемещения указателя обратно в начальную точку списка.
- Затем файл усекается с помощью метода truncate().
- Все строки из файла затем записываются в список, за исключением первой строки. Это стало возможным благодаря нарезке списка.
Удалить строку, совпадающую с заданным конкретным текстом
Этот метод можно использовать, когда есть несколько строк, содержащих определенный текст. Затем можно удалить строки, соответствующие заданному тексту.
Например, мы удалим строку, соответствующую заданному конкретному тексту, из того же файла ( test.txt ), который используется в вышеуказанных методах.
Этот метод использует функцию strip() и функцию write() для реализации задачи удаления строки, содержащей заданный текст.
Следующий код удаляет строку, которая соответствует заданной конкретной строке в Python.
Приведенный выше код вносит следующие изменения и обеспечивает следующий вывод:
Удалить строку, совпадающую с заданным словом
Подобно удалению строки путем сопоставления всей строки, мы также можем попытаться найти слово, которое может содержаться в строке, а затем удалить эту конкретную строку.
Например, мы удалим строку, соответствующую заданному конкретному слову, из того же файла ( test.txt ), который используется в вышеуказанных методах.
Для этого метода мы используем модуль os, который предоставляет Python. Мы также создаем еще один новый файл и записываем в него данные для реализации этой задачи.
Следующий код удаляет строку, которая соответствует заданному слову в Python.
Приведенный выше код вносит следующие изменения и обеспечивает следующий вывод:
Удалить самую короткую строку в данном файле в Python
Как следует из названия, этот метод находит и удаляет самую короткую строку заданного файла. Здесь мы воспользуемся методом len() для реализации этой задачи.
Например, мы удалим самую короткую строку из того же файла ( test.txt ), который использовался в вышеуказанных методах.
Следующий код удаляет самую короткую строку в данном файле в Python.
Удалить все строки из определенного файла в Python
Чтобы удалить все строки определенного файла в Python, мы можем использовать функцию truncate(). Кроме того, указатель файла затем возвращается к началу файла.
Следующий код удаляет все строки из заданного файла в Python.
Статьи DelftStack написаны такими же фанатами программного обеспечения, как и вы. Если вы также хотите внести свой вклад в DelftStack, написав платные статьи, вы можете посетить страницу «Написать для нас».
Статья по теме — файл Python
сообщить об этом объявлении
Поскольку в Python нет прямого метода удаления определенной строки в файле, необходимо найти собственный подход.
В этом руководстве мы рассмотрим несколько способов удаления строк из текстового файла с помощью Python. Мы увидим, как удалять строки в зависимости от их положения в документе и как удалять содержимое, совпадающее со строкой.
Мы также рассмотрим примеры использования пользовательской логики для решения более сложных задач. Неважно, работаем ли мы с простым текстовым файлом или более сложными файлами с разделителями-запятыми (CSV), эти методы помогут вам управлять своими данными.
Мы можем использовать Python для обработки как больших, так и маленьких файлов с эффективным использованием памяти.
Использование числа для удаления строки
В нашем первом примере мы рассмотрим удаление строки в зависимости от ее положения в файле. Начав со случайно сгенерированного списка имен, сохраненного на нашем компьютере, мы будем использовать Python для удаления имени из списка в зависимости от порядка его появления в списке.
Файл называется names.txt и сохраняется в том же каталоге, что и наш файл python. Наша цель — удалить 7-ю строку в файле.
В Python мы можем использовать оператор with для безопасного открытия файлов. Открыв файл, мы воспользуемся методом readlines() для получения списка, содержащего содержимое файла.
Это все, что касается чтения списка имен. Затем мы воспользуемся другим оператором with, чтобы снова открыть файл, на этот раз в режиме записи.
Используя цикл for для перебора строк файла, мы также используем переменную для отслеживания номера текущей строки. Когда мы достигнем строки, которую хотим удалить, оператор if гарантирует, что мы пропустим эту строку.
Давайте еще раз пройдемся по шагам:
- Открыть файл в режиме чтения
- Прочитать содержимое файлов
- Открыть файл в режиме записи
- Используйте цикл for, чтобы прочитать каждую строку и записать ее в файл
- Когда мы дойдем до строки, которую хотим удалить, пропустите ее.
Поскольку мы используем оператор Python with для обработки файла, нет необходимости закрывать его после того, как мы закончим. Python позаботится об этом за нас.
имена.txt
1 Амина, Велчи
2 Шэрон Рейнольдс
3 Лилиан Хейн
4 Фелисита Хауэлл
5 Салли Сенгер
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, перейдите по ссылкам ниже.
Эта статья создана для описания некоторых программ на Python, которые удаляют любую конкретную (конкретную) строку из заданного файла. Здесь пользователь должен ввести как содержимое строки, так и имя файла.
Что нужно сделать перед программой
Поскольку приведенная ниже программа используется для удаления определенной строки, введенной пользователем из данного файла. Поэтому мы должны создать файл с некоторым содержимым внутри него.
Например, создайте файл codecracker.txt и поместите в него следующее содержимое:
Сохранить этот файл в текущем каталоге. Каталог, в котором сохранена приведенная ниже программа Python (для удаления определенной строки из файла). Вот снимок открытого файла codecracker.txt:
Теперь давайте перейдем к созданию программы Python, которая удаляет любую конкретную строку из этого файла через программу.
Удалить определенную строку из файла
Это очень простая версия программы Python для удаления любой необходимой строки из файла. Позже мы модифицировали программу:
Вот пример запуска:
Теперь введите имя вновь созданного файла, скажем, codecracker.txt, а затем введите строку, скажем, I'm a File, чтобы удалить эту строку из данного файла:
Теперь, если вы видите тот же файл (который был создан ранее), строка будет удалена. Вот новый снимок открытого файла codecracker.txt:
Измененная версия предыдущей программы
Эта программа является модифицированной версией предыдущей программы. В этой программе я использовал блок try-except для обработки исключений (если они есть), вызванных методом open() при открытии файла. Конец используется для пропуска автоматической вставки новой строки.
Читайте также:
- Чтобы создать новую папку в программе Windows Commander, нажмите кнопку на клавиатуре
- Как удалить фотографии с карты памяти телефона
- Программное обеспечение для восстановления Windows 7
- Как узнать с кем человек в контакте чаще всего общается в программе для андроида бесплатно
- Драйвер радиопереключателя Kb9x что это такое