Как удалить строку из файла python
Перейти к содержимому

Как удалить строку из файла python

  • автор:

Как удалить только одну строку в CSV с помощью Python?

В этом уроке мы научимся удалять только одну строку в CSV с помощью Python. Мы будем использовать библиотеку Pandas. Pandas — библиотека с открытым исходным кодом для анализа данных; это одна из самых популярных библиотек Python для исследования данных и аналитической информации. Он включает в себя несколько функций для выполнения операций с наборами данных. Его можно комбинировать с другими библиотеками, такими как NumPy, для выполнения определенных функций с данными.

Мы будем использовать метод drop() для удаления строки из любого файла csv. В этом уроке мы проиллюстрируем три примера удаления строки из файла csv, используя тот же метод. К концу этого руководства вы познакомитесь с этой концепцией и сможете удалить строку из любого файла CSV.

Синтаксис

Это синтаксис для удаления нескольких строк из массива.

#drop method data = pd.read_csv("my file") data = data.drop(data.index[index_number]) print(data) 

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

Пример 1. Удаление последней строки из файла CsV

Вот пример, в котором мы удалили последнюю строку с помощью метода drop. Сначала мы читаем файл CSV как фрейм данных с помощью read_csv(), затем используем метод drop() для удаления строки с индексом -1. Затем мы указали индекс для удаления, используя параметр index. Наконец, мы записываем обновленный DataFrame обратно в файл CSV, используя to_csv(), устанавливая index=False, чтобы избежать записи индексов строк в файл.

import pandas as pd df = pd.read_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv') df = df.drop(df.index[-1]) df.to_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv', index=False) 

Выход

CSV-файл перед запуском кода

CSV-файл после запуска кода —

Пример 2. Удаление строки по метке

Вот пример, аналогичный приведенному выше; в этом примере мы удаляем строку с меткой «строка». В этом примере мы читаем CSV-файл с помощью read_csv(), но на этот раз мы устанавливаем столбец «id» в качестве индекса, используя параметр index_m. Затем мы используем метод drop() для удаления строки с индексной меткой «строка». Затем мы указали метку, которую нужно удалить, используя параметр index. Наконец, мы записываем обновленный DataFrame обратно в файл CSV с помощью to_csv(), не устанавливая index=False, поскольку метки строк теперь являются частью файла CSV.

import pandas as pd df = pd.read_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv', index_col='id') df = df.drop('row1') df.to_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv', index=True) 

Выход

CSV-файл перед запуском кода —

CSV-файл после запуска кода —

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

В этом примере сначала мы читаем CSV-файл, затем используем метод drop(), чтобы удалить строку, в которой значение в столбце «Имя» равно «Джон». Мы делаем это, сначала используя логическое индексирование, чтобы выбрать строки, соответствующие условию. Наконец, мы записываем обновленный DataFrame обратно в файл CSV, используя to_csv(), снова устанавливая index=False.

import pandas as pd df = pd.read_csv('example_3.csv') df = df.drop(df[df.Name == 'Ankita'].index) df.to_csv('example_3.csv', index=False) 

Выход

CSV-файл перед запуском кода —

CSV-файл после запуска кода —

Заключение

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

Все права защищены. © Linux-Console.net • 2019-2024

Как удалить определённую строку из .txt файла

Я хочу найти в файле users.txt определённую строку (например, СОДЕРЖАЩУЮ «Привет» ), и удалить эту строку. Я облазил всё — ничего не нашел с моим случаем. И да — покажите легко, не нужно делать огромные непонятные коды. Задача проста — найти и удалить определённую строку из .txt файла

Отслеживать
16.8k 4 4 золотых знака 21 21 серебряный знак 31 31 бронзовый знак
задан 5 фев 2019 в 9:33
vaytonqueen vaytonqueen
91 1 1 золотой знак 1 1 серебряный знак 9 9 бронзовых знаков
Оффтоп: Даже если задача звучит просто, это не значит, что она проста в реализации.
5 фев 2019 в 9:37

А что может быть сложного в ПРОСТОМ УДАЛЕНИИ строки? Я понимаю, сам не умею т.к. начинающий. Но логично же — просто удалить строку.

5 фев 2019 в 9:39

И что по вашему код должен сделать после line.clear()? Допустим, он очистит место на диске, которое занимает эта строчка. Но файл по прежнему будет иметь ту же длину, только теперь с последовательностью нулевых байт в середине, там, где была строка! По любому нужно как минимум сместить все строки, которые идут после удалённой.

5 фев 2019 в 10:05

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

5 фев 2019 в 10:07

@Vayton, если вы в текстовом редакторе удалите одну строчку из текстового файла в котором 1.000.000 строк, то текстовый редактор пересоздаст файл и запишет в него 999.999 строк.

5 фев 2019 в 11:07

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Открываем файл для чтения.
Сохраняем все строки в массив lines

Открываем файл для записи.
Проходим по массиву строк и сравниваем с искомой строкой.
Если строка не найдена — записываем строку в файл.

UPD. С учетом предложений @MaxU

#!/usr/bin/env python3 import re with open('f.txt') as f: lines = f.readlines() str = 'Hello' pattern = re.compile(re.escape(str)) with open('f.txt', 'w') as f: for line in lines: result = pattern.search(line) if result is None: f.write(line) 

Или почти тоже самое, но в один проход (но я за первый вариант)

#!/usr/bin/env python3 import re str = 'Hello' pattern = re.compile(re.escape(str)) with open('f.txt', 'r+') as f: lines = f.readlines() f.seek(0) for line in lines: result = pattern.search(line) if result is None: f.write(line) f.truncate() 

Форум русскоязычного сообщества Ubuntu

Страница сгенерирована за 0.059 секунд. Запросов: 25.

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Как через python удалить строку в файле?

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

  • Вопрос задан более трёх лет назад
  • 42806 просмотров

Комментировать

Решения вопроса 2

Системный администратор

Ответ написан более трёх лет назад

Нравится 3 1 комментарий

Николай Сидоренко @NSidorov Автор вопроса

То, что нужно спасибо!

Avernial

Разрабатываю научное ПО на языке Python.

Можно попробовать использовать: subprocess.call(«sed -i ‘pattern’ file_name», shell=True).
Например для удаление из файла, содержащего числа в каждой строке, чтобы удалить строку с номер два, можно выполнить команду: subprocess.call(«sed -i ‘/2/d’ numbers.txt», shell=True).

Ответ написан более трёх лет назад

Нравится 1 2 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *